如何确保为客户端加载最新版本的javascript代码?

时间:2011-12-13 15:35:26

标签: javascript internet-explorer caching browser

我们的客户拥有数千名用户(均使用Internet Explorer)和大量的javascript文件,可以增强我们产品的用户体验。

我遇到的问题是,只要我们更新其中一个脚本,就无法知道客户端是否看到了最新版本。我们要做的是在查看任何更改之前告诉我们的客户进行硬刷新(ctrl + f5)。显然这种方法并不理想。

我知道浏览器会根据网址进行缓存,因此可以使用类似

的内容
<script src='myScript.js?ver=1.2'>

解决这个问题,但这对我们来说不是一个选择。

我希望有一些标题属性或类似的东西,我们可以用来告诉IE不要缓存这些脚本。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你也可以像jQuery一样对文件名进行版本化:

<script src='myScript-v1-2.js'>

然后,每次修改脚本时,都会修改版本号并修改包含它的页面以指向新脚本的名称。这对于缓存来说是万无一失的,但仍然允许您的查看者获得缓存的最大好处,并且不需要更改.js文件的服务器配置。

完整的解决方案通常包括为主机网页设置相对较短的缓存生命周期,然后允许各种资源(样式表文件,JS文件,图像等)具有更长的缓存生命周期以实现最大缓存。任何指纹识别都可以有很长的缓存生命周期。请参阅fabianhjr发布的the reference有关设置主机网页缓存生命周期的方法。它可以在网页本身(<meta>设置)或通过服务器的http标头中完成。

如果关闭脚本文件的缓存(可能必须在Web服务器级别为脚本文件完成),那么所有查看者都将失去缓存的性能优势,您将失去带宽和负载 - 节省缓存的好处。如果您在许多页面上使用通用的.JS文件(常见的设计模式),您的查看者将会在每个页面上看到较慢的性能。

答案 1 :(得分:2)

您需要了解有关缓存http://www.mnot.net/cache_docs/

的所有信息

http://www.mnot.net/cache_docs/#CACHE-CONTROL&lt; - HTTP标头