c# - 强制浏览器使用新的 JavaScript 文件而不是缓存的

标签 c# javascript asp.net browser-cache

<分区>

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

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

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

谢谢

编辑:

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

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

最佳答案

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

关于c# - 强制浏览器使用新的 JavaScript 文件而不是缓存的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22636211/

相关文章:

javascript - 防止此 javascript 代码中的内存泄漏?

c# - ASP.Net MySql 选择错误

css - 为什么 nav 和 div(背景图片)之间出现空格?

asp.net - 在 ASP.NET MVC 中构建自定义授权

c# - 分割并添加空间

javascript - 在 Razor 中转义 JS 的双引号

javascript - 标签之间的 CSS 样式空间

c# - 如何将日期时间插入时间(0)字段

c# - 为什么 Exec Command 在 netstandard2.0 的 .csproj 中不起作用?

javascript - 这里映射了如何禁用双击缩放