【问题标题】:Webapp application cache updatesWebapp 应用程序缓存更新
【发布时间】:2011-12-08 10:47:25
【问题描述】:

我有一个使用应用程序缓存进行离线和在线访问的 Web 应用。我遇到的问题是当我更改清单文件时,我的一些用户没有看到更新。它适用于我和其他人,所以我唯一的理论是某些 ISP 正在缓存清单文件。

有没有其他人遇到过这种情况?

我不知道以编程方式刷新浏览器应用程序缓存以强制更新的任何方法。 window.applicationCache.update() 似乎没有奏效(至少在 iPad 上)。向 URL 添加查询的常用技巧可能会破坏离线行为。

无奈之下,我可以简单地使用一个不变的加载器页面并将所有代码放入 localStorage 并自己进行更新。

【问题讨论】:

  • 您要与清单文件一起发送哪些过期标头?
  • 谢谢! ExpiresByType text/cache-manifest "access plus 30 minutes" 能解决问题吗? html、js和图片呢?这会影响离线行为吗?

标签: html offline-caching application-cache


【解决方案1】:

通常的做法是立即使清单文件过期,as per HTML5 Boilerplate

ExpiresByType text/cache-manifest       "access plus 0 seconds"

众所周知,如果清单文件未明确过期,则 Firefox 会出现缓存清单文件的问题。上面链接的 HTML5 Boilerplate 文件也有许多其他文件类型的合理默认值。

【讨论】:

  • 由于我正在使用应用程序缓存并且我目前没有版本控制,我想确保为所有其他文件类型(js、css、png)关闭所有中间缓存) 以获得一致的图像。如果离线,其他类型的 0 过期时间也会影响应用程序缓存吗?我需要版本控制吗?
  • 对于每个 js、css 或图像组件的每个版本,我都没有单独的 URL 或查询字符串。
  • @SteveKleiman 你会经常更新所有这些东西吗?这对 appcache 影响不大,但通常你会让人们尽可能长时间地缓存这些文件。
  • 我每隔几周发送一次更新。我主要担心的是他们会在一天内获得更新,更新包含文件的最新版本,并且应用程序缓存在离线时继续工作。
  • 如果他们每天都在检查某些东西(他们必须在一天内获得更新),那么将您的到期时间设置为比更新之间的几周短几天没事的。或者您可以让所有内容立即过期,但这可能会增加来自任何选择不允许离线存储的用户或任何独立于缓存访问的文件的流量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
相关资源
最近更新 更多