使浏览器自动重新加载cssjs文件的最好方法是什么?

html-css021

使浏览器自动重新加载cssjs文件的最好方法是什么?,第1张

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

这是因为IE自从IE9开始,会对网页的MIME类型进行验证,如果MIME类型不正确的话,就不会加载相应的样式表或者JS文件,这也是出于安全的考虑。\x0d\x0a造成IE9以上浏览器无法加载CSS样式表的,有几个可能的原因,一个可能是你的CSS样式引用的书写方式不正确,导致在IE9和IE10下面无法通过MIME的检查,如果是这个原因,在代码里面修改一下css样式引用的方法就行了。\x0d\x0a另外一个可能的原因,可能是你在电脑里面安装了代理软件或者其他什么与代理相关的软件,如wallproxy之类的,这一类软件可能会在打开本地HTML文件时修改mime类型,把type替换为stain之类,这个没有什么特别好的解决方法,要么卸载这些软件,要么重新安装一下试试。\x0d\x0a如果你是自己配置服务器后出现了这个问题,那么就可能是第三个原因了,在服务器端没有配置css的mime类型,这个对应的在IIS或者apache里面添加一下css的type就行了。