清单管理的资源可以在脱机时回退到自己的缓存副本吗?

时间:2012-01-18 02:30:12

标签: html5 cache-manifest

我正在使用HTML5清单来允许应用程序脱机工作。我有一个资源 - 比如 /background.png - 可能会不时更新,但如果应用程序处于脱机状态,则最后检索的版本适合使用。我想要的行为是浏览器在正常情况下正常请求 /background.png ,但如果请求失败,则会回退到缓存版本,因为它处于脱机状态,服务器已关闭,等等。 / p>

在我的测试中,有一个类似

的清单条目
NETWORK:
/background.png

使浏览器始终尝试请求资源。如果它处于脱机状态,它将返回错误,而不是从appcache返回副本。这不是我想要的,但它是我应该按照我的理解行事的方式。

我也试过

FALLBACK:
/background.png /background.png

希望这可能意味着“如果您无法获得新的缓存副本,则回退到缓存副本”,但在该配置中,如果资源在线,浏览器不会尝试请求该资源。

我考虑的另一种可能性是

CACHE:
/offline-background.png

FALLBACK:
/background.png /offline-background.png

但是对于同一资源有两个不同的名称 - 并且请求两次相同的资源(一次用于 img src =“background.png”,一次用于缓存的脱机副本) - 看起来像是一个没有吸引力的黑客。

background.png 更改时,我还可以对清单进行任意更改,但这会导致浏览器检查清单中的所有内容。

是否有可能从HTML5清单中获取“使用我所拥有的内容,除非我能从新版本中获取新模式”?这似乎是一个合理的模式,所以我认为有一个干净的方法来做到这一点。如果没有,有人可以提出另一种方法吗?提前谢谢!

编辑:原始问题提到“news.json”,暗示资源是由JavaScript检索的,但我已将其更改为“background.png”,以便更清楚我想要这样做使用页面使用的任何资源。

1 个答案:

答案 0 :(得分:0)

自己管理缓存的最佳方法是将其粘贴到local storage中。您应该能够简单地将新闻源中的JSON直接放入单个变量中。当您请求/news.json文件仅在200响应中更新其缓存副本时,在您应用的其余部分中始终使用本地存储中的副本。