Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.06.2008, 20:53
H1dd3n вне форума Посмотреть профиль Отправить личное сообщение для H1dd3n Найти все сообщения от H1dd3n
  № 1  
Ответить с цитированием
H1dd3n

Регистрация: Jun 2008
Сообщений: 1
Question Кеширование ответов от php-скрипта при обращении из флеша (AS 3)

Постараюсь описать проблему максимально подробно:

допустим, имеется php-скрипт (php 5.2.6) с именем Test.php:
Код:
<?php
header("Cache-Control: no-cache");
header("Pragma: no-cache");
echo("Responce");
?>
размещенный на сервере Apache (apache 2.2.8 win32) и доступный в локальной сети по адресу, например: http://10.10.10.10/Test.php.

Если я обращаюсь к этому скрипту через Internet Explorer (v. 6), то он успешно выдает ответ (т.е. строку "Responce"), и при этом ответ не кешируется на клиенте, как оно и должно быть - в соответствии с http-заголовками (т.е. в папке ...\Temporary Internet Files\Content.IE5 никаких файлов не создается).

Если же я организую обращение к этому файлу из флеш-приложения (AS 3) следующим образом:
Код:
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest();
req.url = "http://10.10.10.10/Test.php";
req.method = URLRequestMethod.POST;
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(ErrorEvent.ERROR, On_loader_Error);
loader.addEventListener(IOErrorEvent.IO_ERROR, On_loader_IOError);
loader.addEventListener(Event.COMPLETE, On_loader_Complete);
		
var timer:Timer = new Timer(1000, 0);
timer.addEventListener(TimerEvent.TIMER, On_timer_Timer);
timer.start();
		
function On_timer_Timer(event:TimerEvent):void
{
    loader.load(req);
}
		
function On_loader_Error(event:ErrorEvent):void     { trace("Error"); }
		
function On_loader_IOError(event:IOErrorEvent):void { trace("IOError"); }
		
function On_loader_Complete(event:Event):void       { trace(loader.data); }
и открою этот swf-файл браузером (swf-файл тоже выложен на Apache и доступен как, например: http://10.10.10.10/Flash.swf), то все ответы от php-скрипта будут кешироваться (т.е. папка ...\Temporary Internet Files\Content.IE5 будет бесконечно забиваться файлами вида 'Test.htm[0]', содержащими слово Responce).

Насколько я себе представляю флеш использует механизм кеширования браузера, поэтому не понятно из-за чего возникает это кеширование при обращении из флеша, когда при тех же http-заголовках и прямом обращение из браузера его нет.

Добавление в php-скрипт других http-заголовков для управления кешированием, как то:
header('Expires: Mon, 26 Jul 1990 05:00:00 GMT');
header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
так же ни к чему не приводит.

В результате я не могу организовать постоянный обмен данными с серверным скриптом, так как на клиенте бесконечно забивается папка с кешем.

Отмечу, что в Firefox'е этой проблемы нет - ничего лишнего не пишется ни на винчестер, ни в оперативную память.

Буду рад любым идеям по этому поводу. Заранее спасибо.

Старый 30.06.2008, 02:18
Volodja вне форума Посмотреть профиль Отправить личное сообщение для Volodja Найти все сообщения от Volodja
  № 2  
Ответить с цитированием
Volodja

Регистрация: Jun 2008
Сообщений: 1
Я сталкнулся с такой же проблемой что и ты. Ты уже решил ее или отказался? Если решил, то будб добр подскажи как?Просто мне то-же необходимо использование xml из flash. Правда раньше я обходил эту проблему используя mySQL и PHP. Но спейчас необходимость именно в таком решении.
Заранее благодарен!

Старый 30.06.2008, 10:59
jaydee вне форума Посмотреть профиль Отправить личное сообщение для jaydee Найти все сообщения от jaydee
  № 3  
Ответить с цитированием
jaydee
[+ 3 29.06.06]

Регистрация: Jan 2006
Сообщений: 38
Отправить сообщение для jaydee с помощью ICQ
Цитата:
В результате я не могу организовать постоянный обмен данными с серверным скриптом, так как на клиенте бесконечно забивается папка с кешем.
Я правильно понимаю что проблема в том, что данные от скрипта не будут каждый раз обновлятся во флэше? То есть если скрипт для примера будет выдавать строки вида "Response1", "Response2", "Response3"... и т.д. мы будем видеть только "Response1". В этом проблема?

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:56.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.