【问题标题】:Browser-Cache reload with manifest使用清单重新加载浏览器缓存
【发布时间】:2015-05-04 07:19:00
【问题描述】:

我们正在寻找一个不错且干净的解决方案来为网站重新加载自动生成的浏览器缓存。考虑一个版本化的客户端,如果发布了新客户端,则需要重新加载缓存。

有很多方法可以强制重新加载:

  1. 使用 HTML5 清单和“applicationCache”

  2. 在javascript“脚本标签”中使用时间戳。

  3. 服务器:不同的 HTML Header 带有“Cache-Control: no-cache, must-revalidate”

但是,它们似乎不是很好和干净的解决方案。我们不想提供 HTMl applicationCache 的离线解决方案。

问题是:有没有办法使用清单文件(或其他东西)给客户端一个版本,如果版本改变浏览器会自动重新加载他的缓存?可能使用 HTML5 applicationCache,但我们不想离线使用该站点并存储所有内容。我们只想告诉浏览器清除他生成的缓存。

如果我理解正确,这是不可能的,或者是 HTML5 applicationCache 的不同用法。如果我错了,请纠正我。

【问题讨论】:

  • 您是否有机会在您的项目中也使用 PHP?您可以在 PHP 中设置过期日期,它会自动刷新
  • 不,我们不会在我们的项目中使用 PHP。我相信我们可以通过修改服务器的 html 标头来实现这一点,但我认为这不应该是这样。

标签: javascript html caching


【解决方案1】:

一种常见的方法是:

  1. 让主 HTML 文件(例如,index.html)与 Cache-Control: no-cache, must-revalidate 和 maxage 等一起提供(基本上,不要让它被缓存)

  2. 在它加载的资源名称中使用版本号,例如script-v6.js,然后是script-v7.js,当它发生变化时,为这些资源提供未来的标头,以便它们可以被缓存很长时间

  3. 显然在开发中,我们只有简单的文件名;版本号由构建过程添加,该过程执行所有其他构建操作,例如缩小、组合文件等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多