如何检测浏览器缓存中是否存在SWF?

时间:2011-07-24 11:45:03

标签: actionscript-3 http caching swfloader greensock

我有一个AS3应用程序,可以在运行时加载各种SWF。正在使用的加载动画具有相当长的进出动画,如果目标SWF在浏览器缓存中,我不想显示。

所以目前使用Greensock的SWFLoader以基本方式按需要加载每个SWF:

var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
loader = new SWFLoader("mySWF.swf", {name:"sectionLoader",context:context,auditSize:true,onOpen:onLoadInit,onProgress:onLoadProgress, onComplete:onCompleteLoadHandler, onError:onLoadErrorHandler});
loader.load();

我的目标是在调用loader.load();之前做一些事情以确定加载操作是否需要超出浏览器缓存的请求,但在我进入R& Ding之前我认为我会问是否有人已经做了类似的事情。

到目前为止我还有一些想法:

  • 只是跟踪AS3中已加载的内容是不够好的,因为如果用户清除其缓存,则可能会在没有指示符的慢速连接上加载大型SWF。
  • LoaderItem.httpStatusLoaderItem.auditSize()的组合可能值得调查吗?
  • AS3是否有更好的加载框架,而不是Greensock类?
  • 理想情况下,我更愿意进行某种版本检测,以跨越可能相隔几个月的会话,但一次只能一步。

1 个答案:

答案 0 :(得分:2)

当您执行任何HTTP请求时,响应会提供HTTPStatus属性。在AS3中你只需要知道

  

HttpStatusEvent.status == 304

绿色图书馆中的httpStatus

基本上304代码意味着服务器端没有对用户请求的资源进行任何操作。这最终导致资源在缓存中的结论。

<强>更新

如果这不符合您的需要,请尝试存储一些变量,以便您在Cookie或会话变量中播放动画。