【发布时间】: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(空闲)
【问题讨论】:
-
如果这个问题是正确的,你也许可以调整 wav 文件上的标题以至少在第一次播放后将其缓存:stackoverflow.com/questions/11094414/…
标签: javascript caching safari browser-cache html5-appcache