【问题标题】:Safari not utilizing application cache manifestSafari 未使用应用程序缓存清单
【发布时间】:2016-11-17 21:17:23
【问题描述】:

我正在构建一个 HTML5 网页游戏,准确地说是经典小行星游戏的转折。我遇到的问题是 Safari 与 Chrome 或 Firefox 不同,不会自动缓存和使用 .wav 声音文件。如果出现大量声音,这将导致严重滞后。在每个需要“射击”声音的情况下,浏览器都会执行一个新的 GET 请求来获取音频文件,如下所示:

您会看到 151013__bubaproducer__laser-classic-shot-2.wav 是通过网络一遍又一遍地请求并且没有被缓存的拍摄声音。为了强制 Safari 缓存这个文件,我创建了一个 Asteroids.manifest 文件供 appcache 使用:

是的,这是相对于 index.html 和 Asteroids.manifest 的正确目录位置。清单文件似乎确实被消耗了,因为它在 Safari 的调试器存储中可见:

如果您有任何建议,请告诉我,因为我已经尝试了 .manifest 文件的各种不同设置,包括将其命名为 .appcache,确保提供 MIME 类型的 text/cache-清单,并删除 NETWORK/CACHE/FALLBACK 字段

编辑说明:window.applicationCache.status() 为 1(空闲)

【问题讨论】:

标签: javascript caching safari browser-cache html5-appcache


【解决方案1】:

我认为即使清单文件中列出了 Safari 也不会缓存音频文件。您是否尝试过将音频编码为 BASE64 字符串并在启动时解码/转换回音频?看看WepApi,它可能会帮助你完成这个过程。

【讨论】:

    【解决方案2】:

    如果您指的是移动设备,那么这里有一些帖子:HTML5 offline video caching in mobile safari

    总之,移动版 Safari 中的缓存有约 5mb 的限制。桌面上可能有类似的东西。另一位发帖人称,iPhone 不会缓存音频和视频,因为它们是由外部应用程序播放的。似乎唯一的解决方法是将它们作为 base64 存储在本地数据库中(或者也可能是本地存储?-请记住,“私人”浏览会禁用它)。

    如果没有,如果您确实计划以移动版本为目标,也许需要考虑一些事情。

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2014-05-19
      • 1970-01-01
      • 2014-08-29
      • 2023-04-10
      • 1970-01-01
      • 2011-08-02
      • 2017-05-28
      • 2012-07-08
      相关资源
      最近更新 更多