Flash Player 11.7的缓存问题

时间:2013-05-22 17:10:10

标签: internet-explorer http-headers flash osmf

短版本:

我们的Flash应用是来自CDN的直播视频,从最近发布的Flash Player 11.7开始

背景

我们有一个在浏览器中运行的Flash应用。我们在Windows XP和Windows 7上看到了IE 8,9,10的问题。无论是32位还是64位。

当我们的应用程序向我们的CDN请求视频时,浏览器拒绝缓存它,并且它导致高网络流量。缓存在Flash Player 11.6中运行良好。

问题:

使用Fiddler,我们在好的和坏的情况下对比了HTTP请求。唯一的区别是,使用Flash Player 11.7时,原始请求包含:

Pragma: no-cache

我意识到这是特定于实现的,不受支持。请注意, 我们 想要这个。

我们正在使用OSMF framework(版本2.0)并且可以访问源代码。

代码:

具体代码(大幅抽象):

resource = new URLResource(url);
player = new MediaPlayer();
factory = new DefaultMediaFactory();
element = factory.createMediaElement(resource);
player.media = element;

问题:

有人对此有解决方法吗?

想法包括:

  • 建议修补OSMF
  • Flash Player的设置。 IE现在可能认为FP 11.7是代理吗?
  • 其他想法。 CDN配置?

可悲的是,使用其他浏览器不是我们的选择。

1 个答案:

答案 0 :(得分:0)

简而言之,以下内容对我们有用:

改变这个:

var playerResource:URLResource = new URLResource(url); 

到此:

var playerResource:StreamingURLResource = new StreamingURLResource(url); 
playerResource.streamType = StreamType.LIVE_OR_RECORDED;

详细地说,我们知道OSMF 2.0在Flash 11.6和Flash 11.7之间没有变化。然而,似乎streamType的默认值的解释确实发生了变化,可能是偶然的。 Flash 11.7将默认视为“实时流”并且不缓存。

明确指定streamType,事情会恢复正常。 HTTP请求中没有“Pragma:no-cache”。我们的应用程序呼叫视频一次,然后缓存。此修复程序也适用于原始的env,Flash 11.6。