【问题标题】:Disable caching while dynamically loading .XML files via HTTPService?通过 HTTPService 动态加载 .XML 文件时禁用缓存?
【发布时间】:2011-01-24 03:47:06
【问题描述】:

这是我的第一个 CMS 应用程序,后台是 Delphi 7。

我使用了 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);
}

【问题讨论】:

    标签: xml caching load dynamic httpservice


    【解决方案1】:

    我不是一个安静的 Delphi 或 Flex 人。但是原理是一样的。我们在 C#/Silverlight 中所做的是在 url 末尾附加一个随机查询字符串。

    所以你有网址:-

    httpService.url = urlVar;
    

    你想做的:-

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

    这绝对应该忽略缓存并发出新请求。

    注意:-正如我所说我不是 Flex 人,你需要在你的 flex 解决方案中转换上面的行。

    【讨论】:

    • 试过了,因此它不是缓存。一定是并发,我加载这些的时间太接近了???当我创建了一个新的 httpservice 实例(名称稍有不同)时,我能够加载第二个 XML 文件,并且数据是应有的。我相信我应该使用 TAG 版本的 httpservice,我还不知道该怎么做,所以回到书本上。据我了解,mx 标签版本具有并发能力。如果有人可以进一步阐明,请随意,如果我是对的,请告诉我。
    • 即使非常接近,我相信毫秒也会明显不同。不会吗?你想做什么?发出 1000 个请求/毫秒?
    • 哦不,不是毫秒。我也有同样的想法,所以我手动加载第二个 xml 文件,而不是在初始化序列中彼此相邻。结果相同。如果 Firefox 确实正常不显示此怪癖,那么这是一个错误,也许 Flex 4 已修复。我现在要走其他路线。我在这上面浪费了太多时间。
    【解决方案2】:

    在编辑您的代码时,我注意到语法错误。括号数不匹配。我想应该有一个括号,我使用您的代码添加并加粗了一个括号?

    我不知道这是否能解决您的问题,但消除代码中的任何错误可以缩小问题范围。:

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2012-04-06
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多