我正在构建一个 HTML5 网页游戏,准确地说是经典小行星游戏的衍生版。我遇到的问题是,与 Chrome 或 Firefox 不同,Safari 不会自动缓存和使用 .wav 声音文件。如果出现大量声音,这将导致严重的延迟。在每次需要“射击”声音的情况下,浏览器都会执行一个新的 GET 请求来获取音频文件,如下所示:
你会看到151013__bubaproducer__laser-classic-shot-2.wav是通过网络一遍又一遍请求的射击声音,没有被缓存。为了强制 Safari 缓存此文件,我创建了一个 Asteroids.manifest 文件供应用缓存使用:
是的,这是相对于 index.html 和 Asteroids.manifest 的正确目录位置。 list 文件似乎已被使用,因为它在 Safari 的调试器存储中可见:
如果您有任何建议,请告诉我,因为我已经尝试了 .manifest 文件的各种不同设置,包括将其命名为 .appcache,确保它提供了 MIME 类型的文本/缓存- list ,并删除 NETWORK/CACHE/FALLBACK 字段
编辑说明:window.applicationCache.status()为1(Idle)
最佳答案
我认为即使在 list 文件中列出,Safari 也不会缓存音频文件。您是否尝试过将音频编码为 BASE64 字符串并在启动时解码/转换回音频?看看 WepApi ,它可能会帮助您完成该过程。
关于javascript - Safari 不使用应用程序缓存 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40665191/