打开FLASH(SWF)失败,提示Error #2046的解决办法汇总

RSL编译方式的FLEX站点出现#2046错误的解决办法

先简单解释下背景知识:
从FLEX4开始,所有web程序都默认使用RSL的编译方式。那用RSL编译的FLEX站点和普通FLEX站点有什么区别呢?简单的说就是,flash player会在你第一次访问任何一个这种FLEX站点时,缓存下大约1M的类库在系统里。下次用户访问这个站点或者任何其他flex站点时都不用再下载类库这部分文件。RSL编译方式就是在编译时把类库都分离出去了。这种编译方式,在同类flash程序通常大小要接近1M的情况下,可以编出100K左右的整站程序,比一张图片都小。好处自然是非常节省带宽和加载时间。我现在做的几个FLEX站点都采用这种编译方式,加上皮肤也采用全矢量绘图,编译出来的整站程序都保持在100K左右,有效的解决了FLASH加载慢的最大问题。

但问题出来了,有一小部分用户第一次访问站点时,总是出现无法缓存类库的问题,表现就是报错”ERROR:#2046″。或者有些用户原来能够访问成功(说明已经成功缓存过类库了),但突然也开始报错了。直接导致的后果就是根本不能加载程序,想要节省加载时间反而导致不能加载,让我一直很苦恼。从做第一个FLEX4程序开始,我就发现了这个问题,当时只有我的电脑不能访问我写的站点,而大家都能,并且我重装了系统几次,都不行。后来不知道怎么的,我又突然就能访问了,就没有太在意这个问题。现在想想,那时候我干了一件他们都没干的事:我修改过系统时间。调整到2008年了。

正好最近又无意中在论坛上看到高人解答,原来报错的用户也都存在同样的问题:系统时间出错了。因为用户系统的时间早于缓存的类库的有效签名时间,被flash player拒绝加载了。那时我刚好在实验室,又这么刚好就有台电脑就不能访问,查下它的时间是2000年。旁边的电脑都能访问。就修改了下时间测试,马上加载成功了~

困扰我很久的问题终于解决了,非常之高兴,遂写了个js脚本加在网页里,加载前先判断下服务器和客户机的时间差。如果太大就弹出提示。让用户把时间改正确,或者就直接跳转到我准备好的无类库缓存版站点。我有给每个flex站点都加上这种无缓存的版本,供应急用。就是简单再写一个full.html,把引用的程序改成对应的非RSL编译方式生成的swf即可。访问方法为:URL后加上full.html,使用上不会有任何差别。
那么RSL的问题算是完美解决了,顺便也把另一个问题解决了吧:在FLEX站点访问时,还会出现另一个问题,就是很多客户机的FLASH PLAYER版本过低,导致FLEX程序不加载,表现为一片空白,不提示任何信息(只有没有安装FP时,浏览器才会自动提示)。这会让用户误以为站点不能访问了。解决办法也是加上个JS脚本,判断一下FP的版本先。下面附上两个JS脚本,在IE/Firefox/chrome测试均完美通过。

脚本及引用地址:http://blog.csdn.net/chen98qqkk/article/details/5916002

——————————————————
Flash出现Error #2046常用解决办法
1、查看本机时间是否是或接近于internet时间,时间的差错会导致Error #2046的出现
2、清除浏览器缓存,swf文件的更改会导致Error #2046的出现,清除缓存可以读取最新的swf文件
3、Flash过低的版本可能会导致Error #2046的出现(建议解决方案)
4、恶意软件可能会导致Error #2046的出现
5、浏览器崩溃可能会导致Error #2046的出现
6、访问站点维护可能会导致Error #2046的出现

引用地址:http://aajiang.lin.blog.163.com/blog/static/750980312013102395628728/

———————————————————–

打开FLASH(SWF)失败,提示Error #2046的解决办法。

猎豹浏览器:
C:\Users\玛\AppData\Local\liebao\User Data\用户名\Pepper Data\Shockwave Flash\CacheWritableAdobeRoot\AssetCache\?????\*.SWZ

Chrome:
C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\User Data\Default\Pepper Data\Shockwave Flash\CacheWritableAdobeRoot\AssetCache\……

百度浏览器:
C:\Users\玛\AppData\Roaming\baidu\browser\profile\Pepper Data\Shockwave Flash\CacheWritableAdobeRoot\AssetCache

百度浏览器(WinXP)
C:\Documents and Settings\Administrator\Application Data\Baidu\browser\profile\Pepper Data\Shockwave Flash\CacheWritableAdobeRoot\AssetCache

其他
C:\Users\玛\AppData\Roaming\Adobe\Flash Player\AssetCache

C:\Documents and Settings\Administrator\Application Data\Adobe\Flash Player\AssetCache

根据不同浏览器,位置略有不同,但在都是AssetCache目录下有个临时目录,把这个目录下面的文件删除后就可以正常了。

部分路径会是这个:
%appdata%\Adobe\Flash Player
%appdata%\Macromedia\Flash Player

引用地址:http://blog.sina.com.cn/s/blog_50d48c190102vvhb.html

———————————————-
注:本人最后解决问题用的是最后一个方法,删除%appdata%\Adobe\Flash Player\AssetCache目录下面的文件,然后再用ie访问时就不会报#2046错误了

 

发表评论

电子邮件地址不会被公开。