【问题标题】:Preventing browser caching on web application upgrades在 Web 应用程序升级时防止浏览器缓存
【发布时间】:2011-01-04 06:39:21
【问题描述】:

我有一个相当麻烦的问题,我还没有找到好的解决方案。

我允许浏览器缓存我的所有应用程序静态文件(JS、CSS 和图像)以提高性能。

问题是,我在升级的时候,用户还在使用他们缓存中的旧版本,这经常会破坏应用程序,并且每次都需要清除缓存才能解决问题。

是否有任何好的多浏览器方法仍然允许缓存文件,但可以在需要时强制重新加载它们?

感谢您提供任何信息。

【问题讨论】:

    标签: web-applications browser caching upgrade


    【解决方案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%>" />

    【讨论】:

    • 避免不需要的缓存(在应用升级时)不应等于此处的“从不缓存”。
    【解决方案2】:

    我能想到的选项:

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

    【讨论】:

      【解决方案3】:

      在 URL 中附加一些东西作为参数,例如myresource.css?version=1。该文件将被正确服务,这是强制重新加载缓存的技巧。您只需要动态生成html页面。

      【讨论】:

      • +1。这就是 .Net 在您使用嵌入式 Web 资源时所做的事情。
      • 这个问题似乎更详细地涵盖了这个主题:stackoverflow.com/questions/118884/…
      • 嗨。感谢您的链接,它似乎给出了非常透彻的解释。另外,为了理解您自己的解释,版本参数是否需要永远保留在链接中,然后在每次版本升级时递增(如您发布的链接中所示)?再次感谢。
      【解决方案4】:

      我听说过在您希望用户缓存的文件名中使用版本号,但我不能说与其他选项相比有多“好”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-17
        • 1970-01-01
        • 2011-04-28
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多