我正在使用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”,以便更清楚我想要这样做使用页面使用的任何资源。答案 0 :(得分:0)
自己管理缓存的最佳方法是将其粘贴到local storage中。您应该能够简单地将新闻源中的JSON直接放入单个变量中。当您请求/news.json
文件仅在200
响应中更新其缓存副本时,在您应用的其余部分中始终使用本地存储中的副本。