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

时间:2014-03-25 13:33:58

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

我正在维护一个部署在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()。但在这种情况下,我会在同一页面上对同一个文件有两个脚本引用,我想知道是否还有告诉该页面使用该版本的文件而不是该版本。

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

2 个答案:

答案 0 :(得分:3)

强迫'强迫'用于获取文件而不是使用其缓存版本的浏览器是以某种方式更改URL。在我们的系统中,我们的网址注射'包括带有时间戳的查询字符串 - 看起来像" ... something.js / 140324"对于昨天发生变化的文件。

答案 1 :(得分:0)

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

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

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