JS 和 CSS 释放后仅清空一次缓存

Clear cache for JS and CSS only one time after release

我正在开发 .Net(C#) 应用程序。这是一个相当古老的应用程序,具有经典的 Asp 页面、Web 窗体和 MVC 页面。并使用单页应用程序概念来加载所有这些页面。他们都有不同的 CSS 和基于业务逻辑的 JS。

现在的问题是,每次发布后我们都会面临同样的问题,即 CSS 和 JS 缓存。我知道有几种方法可以解决这个问题,最常见的是添加一个版本并在每次发布时更改这个版本。但问题是我们有成千上万个这样的 links 所以更新所有然后我发现它不是我们应该选择的解决方案。

我们想到的另一种方法是,我们可以有一个拦截所有资源请求的模块,我们为每个 CSS 和 JS 文件更新 link 并添加一些版本(我上一段提到的)。但是我在这里看到的问题是,这会使应用程序变慢,因为会为每个资源请求检查和执行一些字符串(文件路径)操作代码。

我相信我不是唯一一个面临这个问题的人,所以如果有人可以分享他们的经验和方法来处理这个问题,并且代码更改最少。

可能有什么帮助:没有必要在文件中包含版本号。如果您的 link 中存在版本号就足够了。 您可以为此使用(假)查询字符串。因此,不是 linking 到你的 css 或像“style.css”这样的 js 文件,你可以 link 到“style.css?version=1.02”。此查询字符串部分被忽略,但浏览器认为它是一个新文件。

也许您可以一次性完成所有 link;使它们成为服务器端(如果是网络表单)并根据您的构建版本添加此版本部分服务器端。那么对于你的下一个版本,问题就解决了..

正如@tim 建议的那样,将查询字符串添加到文件中会对您有所帮助。

考虑到您这一端所需的更改量,我认为为 .js 和 .css 文件准备重写规则(使用模式匹配)并将查询字符串注入目标 URL (永久重定向)会帮助你。

solution for similar query is available here

请注意,对于每个构建,您可能需要根据需要调整配置。