发布新版本时清除浏览器缓存

7
我有一个基于ASP.Net MVC + angular的Web应用程序,目前有500多名用户使用该应用程序。
问题在于每次进行新的发布/更新时,我们都必须要求用户清除他们的浏览器缓存。这对用户来说非常烦人。
像Facebook等其他网站如何管理浏览器缓存以便在更新应用程序/网站时?因为我们通常不会经常清除我们的浏览器缓存。
是否有任何自动清理浏览器缓存的方法可以在发布新版本时使用?

1
不,你不能清除别人的缓存。你可以做的是将发布号添加到文件名中 - 例如将它们放在一个新文件夹 /v3.4.5/angularfile.js 中。 - mplungjan
3个回答

4

使用ASP.Net Core MVC,您可以为脚本文件使用asp-append-version TagHelper。它会计算文件的哈希值并将其附加到文件名后面:

<link rel="stylesheet" type="text/css" href="myfile.css" asp-append-version="true" />    
<script src="myfile.js" asp-append-version="true"></script>

所以文件会变成这样:
<link rel=stylesheet href="myfile.css?v=qWYa_XOt9FCnEt2z8CjC7apiyjA5l9UA9UCqT028LI">
<script src="myfile.js?v=eN9kwxdWtX5aP8H3TFVOQrwu08Qndyktg5kvpSLa1A">

1
你可以像这样为文件添加版本号
<script type="text/javascript" src="pathTofile.some.js?v1"></script>

?后面的文本可以是任何内容。查询字符串将有助于避免缓存,浏览器将加载不同的文件并使缓存失效。

你是指应用程序中的单个JS文件还是所有JS文件? - tarzanbappa
对于所有你想从服务器加载而不是缓存中加载的文件 - brk

0

你可以通过任务运行器(如grunt、gulp等)设置缓存破坏。

通过使用文件计算哈希,您还可以使缓存破坏更加智能化。这样,只有在文件发生更改时才会缓存文件(从而提高性能)。

请查看此示例:https://github.com/shakyShane/grunt-cache-breaker(其他任务运行器也有类似的模块可用)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接