【问题标题】:Appcache - fallback not working as expectedAppcache - 回退未按预期工作
【发布时间】:2017-09-01 21:06:05
【问题描述】:

通过提供FALLBACK,我希望wifi.svg 在从缓存加载时被nowifi.svg 替换。它没有按预期工作。

这是我的缓存清单文件。

CACHE MANIFEST 
# Version 0.1.3


index.html

CACHE: 
images/nowifi.svg

NETWORK: 
images/wifi.svg

FALLBACK:
images/wifi.svg images/nowifi.svg

当我离线时,我只看到缺少图片,而不是缓存的nowifi.svg

我想,既然我从来没有请求过nowifi.svg 可能是问题所在,只是添加了一个隐藏的<img src="images/nowifi.svg" /> 仍然没有运气。

我无法弄清楚是什么问题。

完整项目:https://github.com/palaniraja/kmusic/blob/master/src

【问题讨论】:

    标签: html caching html5-appcache


    【解决方案1】:

    您应该从清单的NETWORK 部分中删除wifi.svg,以使回退功能起作用:

    CACHE MANIFEST 
    #Version 0.1.3
    
    index.html
    
    CACHE: 
    images/nowifi.svg
    
    FALLBACK:
    images/wifi.svg images/nowifi.svg
    

    起初这可能有点违反直觉,但明确的 NETWORK 条目优先于后备条目,这就是为什么您的后备永远不会应用并且图像丢失的原因。

    浏览器也足够聪明,可以识别FALLBACK 条目的左侧将与服务器重新检查,并将正确地替换为备用图像(而不是仅使用缓存副本), 离线时。

    它通常还会自动缓存FALLBACK 条目的右侧(即nowifi.svg),因此您也可以从CACHE 部分中省略它(通过它不会影响任何内容)。

    另外请注意,根据我的经验,谷歌浏览器“开发者工具”和 Firefox 的“离线工作”功能有时会在缓存和离线应用程序方面产生各种奇怪的结果,所以你最好只是切换你的测试时打开和关闭网络服务器或连接。

    【讨论】:

    • 谢谢。答案是不使用开发工具进行测试。我几乎没有停止服务器就回答你“不走运”:-)
    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多