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

标签 javascript internet-explorer caching browser

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

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

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

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

解决这个问题,但这不是我们的选择。

我希望有某种 header 属性或类似的东西可以用来告诉 IE 不要缓存这些脚本。

有什么想法吗?

最佳答案

您也可以像 jQuery 那样对文件名本身进行版本控制:

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

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

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

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

关于javascript - 如何确保为客户端加载最新版本的 javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491846/

相关文章:

javascript - 为什么 0154 === 108?

c# - JavaScript float 错误

javascript - Grafana 5插件开发,如何保存用户数据/面板状态?

javascript - 创建 CSV 并使用 JS 打开,在 IE、Chrome 中不起作用

jquery - 背景透明,文字清晰?

c# - Microsoft Enterprise Library - 缓存机制到期

javascript - 将鼠标悬停在非链接元素上时使链接可见

javascript - 使用 Javascript 更改 IE 文档模式?

caching - hash_data vcl_hash 的作用是什么?

php - 我应该在 php 中缓存整个查询还是应该只缓存行的主键?