4

我正在开发一个基于画布的游戏。

当然,声音是任何游戏的重要组成部分。但有时,同一声音可能一次播放不止一次。

我已经有代码可以检查所需的声音是否已经在播放,如果是,则创建一个具有相同源的新声音并播放它。(从那时起交替使用两个声音元素,直到它需要一次播放 3 次,在这种情况下,它会在列表中添加另一个声音,依此类推)

但是,上述方法在第一次需要多次使用声音时确实会造成相当大的延迟,因此为了缓解这种情况,我想预加载相同的声音,以防它一次使用多次。

我已经设置了一个循环,它将添加一个预加载,然后在完成后添加下一个,等等。这允许我在不中断其他 HTTP 活动的情况下预加载一堆声音(这可能需要游戏)。

但是,我注意到它每次都从服务器获取声音,即使声音已经加载。

这是服务器发送的标头:

HTTP/1.1 200 OK
日期:2013 年 7 月 24 日星期三 20:16:44 GMT
服务器:Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
最后修改时间:星期三, 2013 年 7 月 10 日 12:58:44 GMT
ETag:“209f80-5121-4e127d668a900”
接受范围:字节
内容长度:20769
缓存控制:max-age=29030400,公共
到期时间:2014 年 7 月 24 日星期四 20:16 :44 GMT
X-UA 兼容:IE=edge
连接:关闭
内容类型:音频/mpeg

如您所见,我有一个缓存控制标头,它适用于图像和脚本,但由于某种原因它没有用于声音。浏览器每次都重新请求它们。

帮助?=D

编辑:好的,现在浏览器似乎在第一次加载声音时使用缓存,但每次后续加载都会查询服务器。嗯……

编辑 2: Chrome 似乎处理得很好。看起来 Internet Explorer 是有问题的。

4

0 回答 0