开发者

Fixing Flash's aggressive caching

I have a flash application that loads a big chunk of data that changes occasio开发者_StackOverflow社区nally, so I set up my server to send Last-Modified headers and reply with a 304 Not Modified when the client's version is not outdated.

It works fine in every browser, but Flash completely ignores that and caches the resource aggressively. It doesn't even send a request to the server, it just retrieves the cached file from disk when you try to URLLoader.load a previously visited URL.

The workarounds I find on google aren't helpful for me - either you cache forever or redownload the resource every time (changing the URL parameters). I need a mixture of these - redownload when the resource is updated, use cache otherwise.


You could use a version number as URL parameter... This way it won't be re-downloaded each time Flash Player loads, only when you actually change the version number


I don't know if this will work but it's worth trying.

You could try appending a cache breaker code to the file request. Normally, you would do this by attaching a random string of characters to the end of the file name e.g. new URLRequest("bigFile.foo?uncache=273095285209750"). For you, instead of using a random string you could use a date object to generate the string. For example...

var now:Date = new Date();
var request:URLRequest = new URLRequest("bigFile.foo?uncache=" + new Date(now.year, now.month, now.date));

That would hopefully force the content to recache once per day (or hour or however often you want). If you need even more granular control, you could write a short server side script to see whether the file has been modified and check that before requesting the huge download.

I hope this helps!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜