日期:2014-05-17  浏览次数:20367 次

xxx.css?v=23423324234和yyyyy.js?v=234234324这样有什么好处呢?有的网站是这样做的。
xxx.css?v=23423324234和yyyyy.js?v=234234324这样有什么好处呢?有的网站是这样做的。

------解决方案--------------------
强制刷新,去除缓存
------解决方案--------------------
在IIS之类的上面,可能需要设置自动为所有asp.net请求的返回内容加上消息头 Expire:-1。那么有的人不知道要加这个,或者不容易加(比如说IIS被不太懂维护的人把持着不让碰),那么可能就会在代码中来这样写。

但是代码中这样写,实际上是极其有害的。

在IE浏览器,可能是兼容10年前的ie的原因吧,有这比较变态地“客户端缓存”强迫症。也就是说正常页面(服务器端明明更新了内容而且之前也没有什么错误的消息头设置的页面)、不管你如何禁止客户端缓存,除了手动去ie浏览器的“设置”里边清理,否则ie总是不去访问服务器而直接拿出客户端缓存内容。这在chrome、firfox浏览器中几乎没有,而主要是ie浏览器出现这类bug。于是微软其实会建议所有的web服务器都要默认支持 Expire:-1 这个设置。

现在来说这种 ?随机数 的方法的危害。实际上网站需要高效率!也就是说,服务器端如果改变了文件,那么客户端就应该赶紧刷新,也就是说应该总是默认 Expire:-1 的设置;而如果服务器端没有改变文件,那么它就应该使用304状态来通知客户端拿出客户端缓存,只有这样才能保证网页效率。

你的页面上有成百上千需要304状态的内容。如果你写这种 ?随机数 的写法,你要知道,你就没有这个能力了!