使用PHP和Nginx控制CDN刷新时间
在Web开发中, 我们经常会把图片文件, Css文件, JS文件放到CDN服务器上来实现快速加载, 这是CDN的一个优势, 也是我们需要的, 但是经常会遇到一个情况: CDN刷新总是需要很久, 这种非可控刷新会让开发人员很头疼, 这里提供一种通过PHP+Nginx的方法来实现CDN强制瞬间刷新, 并且对其他特性没有影响.
{规划篇}
//普通
URL:http://r.yiilib.com/site/css/main.css
//强制刷新
URL:http://r.yiilib.com/site/css/v001/main.css
可以看出差别在于我们把版本号v001放到了url里面, 那么当CDN计算的时候会默认为v001/main.css 和 v002/main.css两个文件, 通过这样的原理就可以实现CND刷新时间控制了, 下面来看PHP和Nginx如何实现
{PHP篇}
$versionNum = 'v001';
<link rel="stylesheet" type="text/css" href="http://r.yiilib.com/site/css/<?php echo $versionNum; ?>/main.css">
{Nginx篇}
location ~^/(css|js)/v.*/.*(css|js)$ {
rewrite ^(/(css|js)/)v.*/(.*)$ $1$3 break;
}
对应关系:
location ~^/(css|js)/v.*/.*(css|js)$ => 找到 /css/v001/main.css
$1 => (/(css|js)/) => /css/
$2 => (css|js) => css
$3 => (.*) => main.css
$1$3 => /css/main.css
{CDN篇}
找到老的files并删除掉即可, 搜索 /css/v001 找到001版本对应的文件删除
{优劣分析}
优势: 快速CDN刷新, 无需等待, 对项目初期开发有非常大的帮助
劣势: 需要手动删除文件, 每次更新都要手动修改版本号
{总结}
还是比较推荐这样做的, 随心所欲的刷新CDN, 基本做到了鱼与熊掌.
如果有更好的方式或Bug欢迎留言
留言