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

如何确保为客户端加载最新版本的javascript代码?,javascript,internet-explorer,caching,browser,Javascript,Internet Explorer,Caching,Browser,我们有一个拥有数千名用户(他们都使用Internet Explorer)的客户端和大量javascript文件,这些文件增强了他们对我们产品的用户体验 我遇到的问题是,每当我们更新其中一个脚本时,都无法知道客户端是否看到最新版本。我们要做的是告诉我们的客户在查看任何更改之前进行硬刷新(ctrl+f5)。显然,这种方法并不理想 我知道浏览器缓存基于url,因此可以使用 <script src='myScript.js?ver=1.2'> 回避这个问题,但这不是我们的选择 我希望有一些头属性或

我们有一个拥有数千名用户(他们都使用Internet Explorer)的客户端和大量javascript文件,这些文件增强了他们对我们产品的用户体验

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

我知道浏览器缓存基于url,因此可以使用

<script src='myScript.js?ver=1.2'> 回避这个问题,但这不是我们的选择

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


有什么想法吗?

你需要知道的关于缓存的一切


您也可以像jQuery一样对文件名本身进行版本设置:

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

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

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


如果关闭脚本文件的缓存(可能必须在web服务器级别对脚本文件进行缓存),则所有查看器都将失去缓存的性能优势,也将失去缓存的带宽和负载节省优势。如果您在多个页面上使用公共.JS文件(一种公共设计模式),您的查看者将在每个页面上看到较慢的性能。

为什么这不是您的选项?添加
ver
querystring是实现这一点的一种非常标准的方法。顺便说一句,为什么指纹识别不是一种选择?从技术上讲,它是一种选择,但由于我们的系统的设置方式,它不是一个很好的选择。如果没有其他办法,我们很可能必须找到一个好办法来实现这一目标。不过,我想知道有没有其他办法。一般来说,指纹识别法,这是否仍然取决于未缓存的标头?@Maxx-指纹识别方法仅取决于主机网页未缓存太长时间,您必须对此也实施指纹识别,或者在主机网页上设置某种缓存控制设置。理想的情况通常是主机网页上的缓存生存期相对较短,而大多数已提取指纹的资源的缓存时间较长。这使您能够快速访问更改,但对较大的资源进行长时间缓存。您还可以通过添加以下参数来执行版本控制,而无需更改文件名:
@BSMP-是的,您也可以这样做,但这需要特定的服务器支持来返回与版本号匹配的正确脚本。