2011-01-24 35 views
0

这是我第一个CMS应用程序,在背景中是Delphi 7.通过HTTPService动态加载.XML文件时禁用缓存?

我使用5个不同的XMLListCollections,它们是从服务器上的本地文件动态加载的。 HTTPService将第一个加载到DataGrid中就好了,但是当加载任何后续XML文件时,它将加载与以前相同的精确集合!我认为这必须是缓存?

如何在加载本地XML文件时关闭缓存?我已经尝试了一些建议,如涉及标题等,但似乎没有直接处理加载本地文件。

private function loadXMLData(urlVar:String):void 
    var httpService:HTTPService = new HTTPService(); 
    httpService.url = urlVar; 
    httpService.resultFormat = "e4x"; 
    httpService.addEventListener(FaultEvent.FAULT, httpService_fault); 
    httpService.addEventListener(ResultEvent.RESULT, httpService_result); 
    httpService.send(); 
} 

private function httpService_fault(evt:FaultEvent):void { 
    var title:String = evt.type + " (" + evt.fault.faultCode + ")"; 
    var text:String = evt.fault.faultString; 
    alert = Alert.show(text, title); 
} 

private function httpService_result(evt:ResultEvent):void { 
    var xmlList: XMLList; 
    xmlList = XML(evt.result).Events; 
    ArtistsData = new XMLListCollection(xmlList); 
} 

回答

1

我不安静的德尔福或Flex的家伙。但原则是一样的。我们在C#/ Silverlight中做的是在URL的末尾附加一个随机查询字符串。

那么,你有网址: -

httpService.url = urlVar; 

,你会想做的事: -

httpService.url = urlVar + 'Date=' + currentdatetimealongwithmilliseconds; 

这绝对应该忽略缓存,并作出新的要求。

注意: -正如我所说我不是一个Flex的家伙,你需要在你的Flex解​​决方案中转换上述行。

+0

试过了,因此它不缓存。它必须是并发性的,我加载这些的时间太近彼此?当我创建一个名为httpservice的新实例时,我能够加载第二个XML文件,并且数据应该是它的样子。我相信我应该使用http服务的TAG版本,我不知道该怎么做,所以回到书本上。据我所知,mx标签版本具有并发能力。如果有人可以进一步阐明,请随时留意,并告诉我是否正确。 – ghiebert 2011-01-24 14:37:15

0

在编辑你的代码时,我注意到了一个语法错误。括号的数量不匹配。我认为应该有一个支架,我已经添加了一个粗体,使用你的代码?

我不知道这是否会解决您的问题,但消除任何在你的代码错误缩小了问题:

private function loadXMLData(urlVar:String) { // <== HERE? 
    var httpService:HTTPService = new HTTPService(); 
    httpService.url = urlVar; 
    httpService.resultFormat = "e4x"; 
    httpService.addEventListener(FaultEvent.FAULT, httpService_fault); 
    httpService.addEventListener(ResultEvent.RESULT, httpService_result); 
    httpService.send(); 
} 

private function httpService_fault(evt:FaultEvent) { 
    var title:String = evt.type + "(" + evt.fault.faultCode + ")"; 
    var text:String = evt.fault.faultString; 
    alert = Alert.show(text, title); 
} 

private function httpService_result(evt:ResultEvent) { 
    var xmlList: XMLList; 
    xmlList = XML(evt.result).Events; 
    ArtistsData = new XMLListCollection(xmlList); 
}