auto-versioning的实现方案如下:首先,在httpd.conf或者.htaccess中开启urlrewrite规则RewriteEngine onRewriteRule ^(.*)\.[\d]+\.(css|js)$ $1.$2 [L]其中[L]表示如果该条规则匹配,将忽略其他规则。可参考这里The [L] flag causes mod_rewrite tostop processing the rule set. In mostcontexts, this means that if the rulematches, no further rules will beprocessed.接着,使用下面的PHP代码:function auto_version($file){if(strpos($file, '/') !== 0 || !file_exists($_SERVER['DOCUMENT_ROOT'] . $file))return $file$mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . $file)return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file)}以后,诸如下面的代码:<link rel="stylesheet" href="/css/base.css" type="text/css" /改成:<link rel="stylesheet" href="<?=auto_version('/css/base.css')?" type="text/css" /\这样,你不需要再改动任何代码,用户将始终使用最新版本的文件,因为当文件版本变动时,url也会改变。其实该方法也适合其他类型的文件,不仅仅css、js你的意思是这样吗:
如两个页面都连接同一个CSS文件
当一个页面打开后,这个CSS文件被加载到
临时文件夹
打开另一个页面后,这个CSS文件会不会再下载一次?
不会
除非你那页面设置不要缓存
解决方案:
请先清空缓存,然后刷新重试。清空缓存的方法是:
①打开IE浏览器点击“工具”-“Internet选项”;
②打开IE浏览器点击“工具”-“Internet选项”;
③点击“删除文件(F)”-在“删除所有脱机内容”前打勾,点击“确定”;
完成清理缓存处理后,请重新登录邮箱查看。