2011-10-15 49 views
1

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

有没有其他人遇到过这个?

我不知道有什么办法以编程方式刷新浏览器应用程序缓存来强制更新。 window.applicationCache.update()似乎没有办法(至少在iPad上)。将查询添加到URL的常用技巧可能会破坏脱机行为。

无奈之下,我可以简单地使用一个不变的加载页面,并把所有的代码放在localStorage中,并做我自己的更新。

+0

您使用清单文件发送了哪些过期标题? – robertc

+0

无。你如何设置它们? – srkleiman

+0

谢谢!会 ExpiresByType文本/缓存清单“访问加30分钟” 做的伎俩?那么html,js和图像呢?这会影响离线行为吗? – srkleiman

回答

0

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

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

火狐特别是已知有问题与缓存清单文件如果没有明确到期。与上面链接的HTML5 Boilerplate文件对于其他文件类型也有一些合理的默认值。

+0

因为我正在使用应用程序缓存,并且我目前没有版本控制,所以我想确保为所有其他文件类型(js,css,png)关闭所有中间缓存以获得一致的图像。如果离线,其他类型的0到期时间是否也会影响应用程序缓存?我需要版本控制吗? – srkleiman

+0

@SteveKleiman我不确定'版本控制'是什么意思? – robertc

+0

对于每个js,css或image组件的每个版本,我没有单独的URL或查询字符串。 – srkleiman