Отключить кэширование при динамической загрузке файлов .XML через HTTPService? - PullRequest
0 голосов
/ 24 января 2011

Это мое первое 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);
}

Ответы [ 2 ]

1 голос
/ 24 января 2011

Я не тихий парень из Delphi или Flex. Но принципы те же. Что мы делаем в C # / Silverlight - добавляем случайную строку запроса в конце URL.

Итак, где у вас есть URL: -

httpService.url = urlVar;

Вы хотели бы сделать: -

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

Это определенно должно игнорировать кеш и сделать новый запрос.

Примечание: - Как я уже сказал, я не специалист по Flex, вам нужно преобразовать приведенную выше строку в ваше решение Flex.

0 голосов
/ 07 июня 2012

Во время редактирования вашего кода я заметил синтаксическую ошибку.Количество скобок не совпадает.Я предполагаю, что должна быть скобка, где я добавил и выделил жирным шрифтом, используя ваш код?

Я не знаю, решит ли это вашу проблему, но устранение всего, что ошибочно в вашем коде, сужает проблему.:

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