我正在构建一个HTML5网页游戏,准确地说是对经典小行星游戏的一种旋转。我遇到的问题是,与Chrome或Firefox不同,Safari不会自动缓存和使用.wav声音文件。如果发出大量声音,这会导致严重滞后。在每个需要拍摄""声音,浏览器将执行新的GET请求以获取音频文件,如下所示:
你会看到151013__bubaproducer__laser-classic-shot-2.wav是一遍又一遍地通过网络请求的拍摄声音,并且没有被缓存。为了强制Safari缓存此文件,我已经为appcache创建了一个Asteroids.manifest文件:
是的,这是相对于index.html和Asteroids.manifest的正确目录位置。并且清单文件似乎消耗了,因为它在Safari的调试器存储中可见:
如果您有任何建议,请告诉我,因为我已经尝试了.manifest文件的各种不同设置,包括命名.appcache,确保它以MIME类型的文本/提供cache-manifest,并删除NETWORK / CACHE / FALLBACK字段
编辑注释:window.applicationCache.status()为1(空闲)
答案 0 :(得分:2)
我认为即使在清单文件中列出,Safari也不会缓存音频文件。您是否尝试将音频编码为BASE64字符串并在启动时解码/转换回音频?看看WepApi,它可能会帮助您完成这个过程。
答案 1 :(得分:1)
如果您的意思是移动设备,那么这里有一些帖子:HTML5 offline video caching in mobile safari
总之,移动Safari中的缓存限制为~5mb。桌面上可能有类似的东西。另一张海报说音频& iPhone不会缓存视频,因为它们是由外部应用程序播放的。似乎唯一的解决方法是将它们作为base64存储在本地数据库中(或者也可能是本地存储? - 请记住,“私密”浏览会禁用它)。
如果没有,如果您计划定位移动版本,可能需要考虑一些事项。