flash播放MP3的问题
最近碰到了一个奇异的问题:apache的服务器,一个Flash调Mp3进行播放,用IE和chromium打开后启动时正常,一旦暂停后,再次播放就无效。但对于Firefox则完全正常。 反复检查代码,无果。将文件上传到另外一台机器后IE也正常。反复修改KeepAlive,disk-cache之类的设置,完全没有效果。 真是叫人郁闷。 ? 检查了apache的配置,感觉问题应该跟mod_deflate模块有关,相应的代码如下: ??? <IfModule deflate_module> ??????? SetOutputFilter DEFLATE ??????? BrowserMatch ^Mozilla/4 gzip-only-text/html ??????? BrowserMatch ^Mozilla/4.0[678] no-gzip ??????? BrowserMatch bMSIE !no-gzip !gzip-only-text/html ??????? SetEnvIfNoCase Request_URI ??????????????? .(?:gif|jpe?g|png)$ no-gzip dont-vary ??? </IfModule> 关闭后IE恢复正常,考虑到一般情况下,mp3和swf压缩不了多少,但是却经常需要断点续传,重新修改相应配置: ??? <IfModule deflate_module> ??????? SetOutputFilter DEFLATE ??????? BrowserMatch ^Mozilla/4 gzip-only-text/html ??????? BrowserMatch ^Mozilla/4.0[678] no-gzip ??????? BrowserMatch bMSIE !no-gzip !gzip-only-text/html ??????? SetEnvIfNoCase Request_URI ??????????????? .(?:gif|jpe?g|mp3|swf|png)$ no-gzip dont-vary ??? </IfModule> 完全正常! 分析下来大致原理如下(个人分析,无依据): mp3采用流格式传输,没有完全下载结束就被暂停下载,由于系统启用了mod_deflat的压缩传输模块,本地保存的实际上是一个gzip过的mp3文件。 由于目前主流浏览器都支持断点续传,而对于断点续传的处理却各有不同,IE和chromium可能会先对于gzip之前的文件进行校验,发觉校验失败,认为这是一个错误的文件,不再进行续传;FF则是先不进行校验,或者校验失败后重新下载续传。 尚为猜测,希望各位朋友给个确凿的解释。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |