防止浏览器缓存Web应用程序升级

5
我有一个非常棘手的问题,目前还没有找到好的解决方案。
我允许浏览器缓存所有应用程序静态文件(JS、CSS和图像)以提高性能。
问题在于,当我进行升级时,用户仍然使用他们缓存中的旧版本,这经常会破坏应用程序,并需要每次清除缓存才能解决问题。
是否有任何良好的多浏览器方法,仍然可以允许缓存文件,但可以在需要时强制重新加载它们?
感谢任何信息。
4个回答

7

将内容作为参数附加到URL末尾,例如:myresource.css?version=1。文件将被正确传输,这是一种用于强制重新加载缓存的技巧。您只需要动态生成HTML页面即可。


+1. 当您使用嵌入式Web资源时,这就是.Net所做的。 - David
这个问题似乎更详细地涵盖了主题:https://dev59.com/tnVD5IYBdhLWcg3wAWoO - ewernli
你好。感谢提供链接,它似乎提供了非常详细的解释。另外,为了理解您自己的解释,版本参数是否需要永久保留在链接中,并且每次版本升级时都要递增(如您发布的链接中所示)?再次感谢。 - SyBer

0
我听说过在文件名中使用版本号,以便用户缓存,但我无法确定与其他选项相比它有多“好”。

0

我能想到的选项:

  • 减少缓存TTL
  • 将可缓存的内容存储在版本化的目录树中,例如:
    • /app/1.2/css/
    • /app/1.2/js/

-1

您可以使用以下格式进行自动随机版本控制

对于js文件:

<script type="text/javascript" src="js/app.js?seq=<%=DateTime.Now.Ticks%>"></script>

对于css文件:

<link rel="stylesheet" type="text/css" href="Styles/styles.css?seq=<%=DateTime.Now.Ticks%>" />


避免在应用程序升级时出现不必要的缓存,这并不等同于“永不缓存”。 - Jérôme Beau

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