如何在Flex中加载缓存的预加载图像

时间:2011-04-05 15:13:57

标签: flex image caching preload

在我的应用程序中,我使用Loader实例多次调用将图像预加载到后台的浏览器中,并忽略complete事件。我不将结果存储在应用程序中,而是希望将它们存储在浏览器缓存中。这些图片有很长的Expires标题日期。

当我想使用特定图像时,我再次使用Loader实例并调用相同的url并侦听complete事件以将文件加载到Image。

问题在于,当我重新请求“缓存”图像的URL时,它正在发出一个响应200状态的http请求,我认为这意味着它正在命中服务器。

如何确保对缓存图像的请求永远不会从Flex命中服务器?

一般情况下,我发现任何对缓存图像的URL请求(带有一个很长的expires头)都会向服务器发出另一个请求,或者至少这是我在Firebug中对它的解释。

任何想法如何做到这一点?或者我误解了Firebug告诉我的内容?

感谢。

1 个答案:

答案 0 :(得分:0)

所以,是的,我误解了萤火虫。事实证明,firebug记录了url请求,看起来像是一个普通的请求。但是,如果使用wireshark等网络监视器监视网络,您会注意到缓存图像的URL没有传出数据包。 Flex会加载缓存的图像。

为了安全地进行图像缓存,我添加了一个以下的Cache-Control标头(虽然我认为过期已经足够了。发布此内容时已有一年了。)

缓存控制:max-age = 31536000,必须重新验证

到期日:2011年12月1日星期四16:00:00 GMT

因此,如果您正确设置缓存标头(请注意,如果日期不是expires标头中的有效日期,则它不起作用),当您将URL调用缓存图像时,flex将从缓存加载。