2016-11-17 111 views
1

我正在构建一个HTML5网页游戏,对经典小行星游戏进行精确的旋转。我遇到的问题是,与Chrome或Firefox不同,Safari不会自动缓存和使用.wav声音文件。如果发生大量声音,这会导致严重滞后。上需要一个“射击”的声音的每个实例,浏览器将执行新的GET请求来获取音频文件,如下所示:Safari不利用应用程序缓存清单

Audio files Cached:No

,你会看到151013__bubaproducer__laser经典拍-2 .wav是一次又一次通过网络请求的拍摄声音,不会被缓存。在企图迫使Safari浏览器缓存文件,我创建了一个Asteroids.manifest文件的应用程序缓存利用:

enter image description here

是的,这是相对于双方的index.html正确的目录位置以及Asteroids.manifest。和清单文件确实出现了被消耗掉,因为它在Safari浏览器的调试器存储可见:

enter image description here

请让我知道如果您有任何建议,因为我已经尝试了各种不同设置的.manifest文件,包括命名它.appcache,确保它提供MIME类型的文本/缓存清单,并删除NETWORK/CACHE/FALLBACK字段

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

+0

如果这个问题是正确的,你可能可以调整wav文件中的头文件以便至少在第一次播放后将其缓存起来:http://stackoverflow.com/questions/11094414/caching-sounds-on-移动Safari浏览器 – dandavis

回答

2

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

1

如果你的意思是移动的,那么这里还有一些帖子:HTML5 offline video caching in mobile safari

总之,对于在移动Safari浏览器缓存中的〜5MB的限制。桌面上可能有类似的东西。另一张海报称,由于iPhone是由外部应用程序播放的,所以音频&视频不会被iPhone缓存。似乎唯一的解决方法是将它们作为base64存储在本地数据库中(或者也可能是本地存储) - 请记住“在私人浏览器中禁用它”)。

如果没有,如果您计划定位移动版本,可能需要考虑一些事项。

相关问题