在我的应用程序中,我使用Loader实例多次调用将图像预加载到后台的浏览器中,并忽略complete事件。我不将结果存储在应用程序中,而是希望将它们存储在浏览器缓存中。这些图片有很长的Expires标题日期。
当我想使用特定图像时,我再次使用Loader实例并调用相同的url并侦听complete事件以将文件加载到Image。
问题在于,当我重新请求“缓存”图像的URL时,它正在发出一个响应200状态的http请求,我认为这意味着它正在命中服务器。
如何确保对缓存图像的请求永远不会从Flex命中服务器?
一般情况下,我发现任何对缓存图像的URL请求(带有一个很长的expires头)都会向服务器发出另一个请求,或者至少这是我在Firebug中对它的解释。
任何想法如何做到这一点?或者我误解了Firebug告诉我的内容?
感谢。
答案 0 :(得分:0)
所以,是的,我误解了萤火虫。事实证明,firebug记录了url请求,看起来像是一个普通的请求。但是,如果使用wireshark等网络监视器监视网络,您会注意到缓存图像的URL没有传出数据包。 Flex会加载缓存的图像。
为了安全地进行图像缓存,我添加了一个以下的Cache-Control标头(虽然我认为过期已经足够了。发布此内容时已有一年了。)
缓存控制:max-age = 31536000,必须重新验证
到期日:2011年12月1日星期四16:00:00 GMT
因此,如果您正确设置缓存标头(请注意,如果日期不是expires标头中的有效日期,则它不起作用),当您将URL调用缓存图像时,flex将从缓存加载。