XML缓存在本地测试中

时间:2010-03-17 11:18:15

标签: xml actionscript-3 caching loading

我的问题是关于XML加载。我需要避免使用xml缓存。

在Web服务器上,该技术是在每次XML文件时添加随机参数以重新加载。 但在本地测试中(在Flash CS4 IDE中,CTRL + Enter),以下行是不可能的:

var my_date : Date;
path = "toto.xml?time="+my_date.getSeconds()+my_date.getMilliseconds();

有没有办法绕过这个问题? 我在不同的论坛上阅读过关于“删除”的方法,我们删除了xml对象,然后重新创建了一个新的。

就我而言,我说:myXML = null; myXML = new XML ( loadedData ); 但它根本不起作用。

我发现了一些有趣的东西,但对于Air 1.0而言cacheResponse不幸。 在AS3中,我发现:

var loader     : URLLoader  = new URLLoader();
var urlRequest : URLRequest = new URLRequest( xmlUrl );
var header     : URLRequestHeader = new URLRequestHeader ( "pragma", "no-cache" );
urlRequest.requestHeaders.push(header);

但它不起作用。

我花了很多时间来解决这个问题,如果有人有一个很好的解决方案...... 谢谢。

2 个答案:

答案 0 :(得分:1)

最近我开始使用调试代理,让我完全禁用缓存,但在我这样做之前,我使用了这个小动作代码片段来处理这个问题:

import flash.system.Capabilities;

var url:String = "foo.xml";
if (Capabilities.playerType == "StandAlone" || Capabilities.playerType == "External") {
    // running locally, cache busting not required
} else {
    // running in browser
    url += "?rnd=" + Math.random();
}

答案 1 :(得分:0)

主要的巨魔,但是:Pragma不是控制缓存的最佳选择。花些时间研究缓存:http://www.mnot.net/cache_docs/#PRAGMA

毕竟,在URL查询字符串的末尾添加一个随机数仍然是一种通过缓存来通过所有的数据库的绝对方法。