【问题标题】:Force The browser to use the fresh JavaScript file instead of the cached [duplicate]强制浏览器使用新的 JavaScript 文件而不是缓存的 [重复]
【发布时间】:2014-05-03 09:24:44
【问题描述】:

我正在维护一个部署在 IIS 6.0 上的 asp.net 3.5 网站,我已经对 javascript 文件“scormapi.js”进行了一些修复,应该将它(仅此文件)复制到客户端网站服务器。我的问题是对该文件及其版本的脚本引用通过服务器端代码注入到页面中:

ClientScript.RegisterClientScriptInclude("DWScormAPI.js", ResolveUrl("~/Scripts/scormapi.js?Version=3.3"))

这意味着如果我只是复制文件,客户端浏览器将使用缓存的文件。有没有办法强制浏览器使用新复制的文件版本而不重新编译和部署dll。

谢谢

编辑:

我想向使用 js 文件的 aspx 页面添加一个标记,该标记引用具有不同版本号的该 js 文件,或者可能使用 jquery $.getScript()。但在这种情况下,我会在同一个页面上有两个对同一个文件的脚本引用,我想知道是否有办法告诉页面使用这个版本的文件而不是那个版本。

注意:这不是重复的问题。我在问是否有替代解决方案可以避免我修改服务器端代码,然后重新编译和完全部署。有些人提到的重复问题并不是我要问的。

【问题讨论】:

    标签: c# javascript asp.net browser-cache


    【解决方案1】:

    “强制”浏览器获取文件而不是使用其缓存版本的唯一方法是以某种方式更改 URL。在我们的系统中,我们的“url 注入”包括一个带有时间戳的查询字符串 - 对于昨天更改的文件,看起来像“...something.js/140324”。

    【讨论】:

      【解决方案2】:

      以下是为您的用户更新 js 文件的一些想法。

      您可以让 ?Version= 的值每 X 分钟更改一次,这会强制客户端在访问网站时每 X 分钟加载一个新的 js 文件。

      如果您确实必须在服务器端检测它,您可以让 ?Version= 具有与该文件的最后编辑信息匹配的值。例如。让服务器在系统上找到文件并检查最后的编辑信息并将该信息附加到 ?Version= url 部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-12
        相关资源
        最近更新 更多