我有一个Flash应用程序,它会加载大量数据,偶尔会更改 ,因此我将服务器设置为发送Last-Modified
标题并在304 Not Modified
时回复客户的版本不会过时。
它在每个浏览器中都能正常工作,但Flash完全忽略了这一点,并且积极地缓存资源。它甚至不向服务器发送请求,它只是在您尝试URLLoader.load
以前访问过的URL时从磁盘检索缓存文件。
我在google上找到的解决方法对我没有帮助 - 要么永久缓存,要么每次都重新下载资源(更改URL参数)。我需要混合使用这些 - 在资源更新时重新下载,否则使用缓存。
答案 0 :(得分:4)
您可以使用版本号作为URL参数...这样,每次Flash Player加载时都不会重新下载,只有在您实际更改版本号时才会重新下载
答案 1 :(得分:1)
我不知道这是否有效,但值得尝试。
您可以尝试在文件请求中附加缓存断开代码。通常,您可以通过将随机字符串附加到文件名的末尾来完成此操作,例如new URLRequest("bigFile.foo?uncache=273095285209750")
。对于您而言,您可以使用日期对象来生成字符串,而不是使用随机字符串。例如......
var now:Date = new Date();
var request:URLRequest = new URLRequest("bigFile.foo?uncache=" + new Date(now.year, now.month, now.date));
这有望强制内容每天重复一次(或小时,或者经常需要)。如果您需要更精细的控制,您可以编写一个简短的服务器端脚本来查看该文件是否已被修改,并在请求大量下载之前检查该文件。
我希望这有帮助!