2

我们的 asp.net Web 应用程序允许我们的(大).css 和 .js 文件被客户端浏览器缓存,以获得更快的性能。

但是每当我们部署一个新版本时,我们都会接到用户的电话,说页面看起来很乱,并且充满了 javascript 错误。事实证明,他们的浏览器没有重新下载更改后的 .css 和 .js 文件。Ctrl-F5 总是修复它。

有没有办法在升级部署后强制重新下载,而不将其设置为不缓存(从而减慢我们的应用程序的速度)?

我发现了这一点(每次部署手动更改对每个文件的引用): 如何强制给定文件在缓存中过期?

和这个(同样的事情,但每次页面加载的校验和计算): 需要关于如何实现 js/css 版本控制的建议

但肯定有比这更合理的解决方案......?

4

2 回答 2

4

在文件中设置版本号对我们很有效:

<script type="text/javascript" src="somefile.js?v=1.0"></script>

只要您在每次“发布”时更改该版本号,浏览器就会认为它是一个新文件。

您可以通过在全局文件(如配置文件或其他文件)中简单地使用版本号,然后在您希望的每个脚本/css 标记上设置变量来做到这一点。

于 2013-07-13T04:03:20.687 回答
0

最好的方法是在文件名中使用版本控制。如果您正在使用 SVN、Microsoft Team Foundation 等代码版本控制,那么您可以使用最后一个签入号作为文件名的后缀,例如,假设当前签入号是 1321(或者您也可以使用时间戳yyyy-mm -dd-hh-mm2015-01-15-17-15 )

因此 somefile.js 将变为somefile_v1321.js 或 somefile.js 将变为somefile_v2015-01-15-17-15.js

现在您会想知道这里发生了如此多的文件名更改。答案是,如果你的发布非常频繁,那么考虑使用像 Ant 脚本这样的脚本语言,它可以更改发布文件中的 JS 和 CSS 导入文件名。

每次进行新的部署时,资源都会有一个新的统一路径,这对浏览器来说是唯一的,所以它会重新加载。

于 2015-01-15T11:42:38.883 回答