as3中ProgressEvent的bytesTotal始终为0

as3中ProgressEvent的bytesTotal始终为0

遇到很奇怪的问题,as3中监听资源下载的PROGRESS事件(ProgressEvent.PROGRESS),它的bytesLoaded属性倒是正常的,但bytesTotal属性却始终为0,结果是导致了得到的下载比率为无穷大(Infinity)
evt.bytesLoaded / evt.bytesTotal <==> evt.bytesLoaded / 0

在网上搜索了一下,有以下三种情况导致bytesTotal始终为0:
1、如果将进度事件调度/附加到某个 Socket 对象,则 bytesTotal 将始终为 0,参考ProgressEvent的事件对象>>
2、从php里动态加载内容导致的bytesLoaded始终为0,解决方案>>
3、web服务器开启gzip导致
如果是gzip开启问题导致的,一般的的解决办法是修改PHP文件
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>

因开发环境是在Windows下,而web服务器使用的是nginx,然后查看了一下nginx.conf的配置,发现gzip是开启的,但只是对以下的文件类型才进行压缩
gzip_types text/plain application/x-javascript text/css application/xml image/jpeg image/gif image/png;
而swf的文件类型应该是application/x-shockwave-flash,即使如此依然不行。

然后清空了缓存再试,起作用了,无穷大不再存在了。
而为何开启gzip会影响到swf获取byteTotal呢?nginx并未对swf文件作特殊的处理啊!

我用httpwatch抓取swf的下载,发现其http header在gzip开启的情况下还是有的,这种现象很难解释了,gzip对swf的加载起到了什么影响?难道正如那篇文章所讲的,返回的http header里没有Content-Length属性?而我抓到的却是有的…

不管怎么样,问题是解决了,可是疑惑却加重了…
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值