Javascript Safari未利用应用程序缓存清单

Javascript Safari未利用应用程序缓存清单,javascript,caching,safari,browser-cache,html5-appcache,Javascript,Caching,Safari,Browser Cache,Html5 Appcache,我正在构建一个HTML5网络游戏,确切地说,这是一个经典的小行星游戏。我遇到的问题是Safari与Chrome或Firefox不同,它不会自动缓存和使用.wav声音文件。如果有大量的声音出现,这将导致严重的延迟。在每次需要“拍摄”声音的情况下,浏览器将执行新的GET请求以获取音频文件,如下所示: 您将看到151013__bubaproducer__laser-classic-shot-2.wav是通过网络一次又一次请求的拍摄声音,没有被缓存。为了强制Safari缓存此文件,我创建了一个Aste

我正在构建一个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类型的文本/缓存清单,以及删除网络/缓存/回退字段


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

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

如果您指的是移动,那么这里有一些帖子:

总之,mobile Safari中的缓存有~5mb的限制。桌面上可能有类似的东西。另一张海报说,iPhone不会缓存音频和视频,因为它们是由外部应用程序播放的。似乎唯一的解决办法是将它们作为base64存储在本地数据库中(或者也可以是本地存储?——请记住,“私下”浏览会禁用它)


如果不是,如果你计划针对移动版本,也许需要考虑一下。 如果此问题正确,您可以调整wav文件的标题,至少在第一次播放后将其缓存: