我有一个 ASP.Net 的MVC + angular Web应用程序。大约有500 +用户正在使用该应用程序。
问题是每当我们进行新的发布/发布时,我们都必须说用户清除他们的浏览器缓存。这对用户来说很烦人。
其他网站(如Facebook等)在更新其应用程序/站点时如何管理浏览器缓存,因为我们不会经常清除浏览器缓存。
有没有办法在有新版本时自动清除无聊缓存。
使用 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">
您可以像这样向文件添加版本号
<script type="text/javascript" src="pathTofile.some.js?v1"></script>
?
后面的文本可以是任何内容。查询字符串将有助于避免缓存,浏览器将加载不同的文件并使 cache
您可以通过任务运行器设置缓存无效化:grunt,gulp等。
通过使用文件计算哈希,您还可以使缓存中断更加智能。这样,仅当文件发生更改时,才会缓存文件(从而提高性能)。
请检查此示例:https://github.com/shakyShane/grunt-cache-breaker(类似的模块可用于其他任务运行程序)