Внутренний кэш Flash CS4 IDE при загрузке внешних данных - PullRequest
2 голосов
/ 12 августа 2010

При извлечении внешних переменных с URL-переменных сервера мой Flash зависает при первых значениях компиляции.Всякий раз, когда я обновляю значения сервера, flash компилирует первые старые значения.Только после перезапуска CS4 IDE значения обновляются.Есть ли внутренний кеш?

В моем коде нет ничего плохого, потому что он отлично работает на моем Mac, но не на ПК.

Ответы [ 2 ]

3 голосов
/ 18 сентября 2012

Они хранятся в кеше «Временные файлы Интернета» вашей системы (т.е. кеш И.Е.). У меня Firefox в качестве браузера по умолчанию, но они все еще хранятся в подпапке " AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5 ".

Вот как я установил этот факт. Сначала я снова включил обновления NTFS Last-Access-Time в Windows 7, установив HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem \ NtfsDisableLastAccessUpdate в ноль и перезагрузил компьютер. Затем я открыл Visual Studio и создал программу с экземпляром FileSystemWatcher, настроенным, как показано в приведенном ниже коде:

FileSystemWatcher watcher = new FileSystemWatcher( "C:\\", "*.swf" );
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite;
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
watcher.IncludeSubdirectories = true;
watcher.EnableRaisingEvents = true;

Затем я протестировал программу во Flash CS6, которая загружает внешние SWF-файлы с удаленного сервера. Он использует класс URLLoader, чтобы сначала получить байты файла, а затем вызывает метод loadBytes экземпляра Loader для загрузки байтов SWF. (Использование URLLoader - это обходной путь, позволяющий обойти ограничение локальной изолированной программной среды безопасности, которое в противном случае не позволило бы загружать удаленный код в один и тот же домен приложения и домен безопасности локального SWF; это требование для моей базы кода, поскольку удаленный SWF использует классы, определенные в локальном контейнере SWF).

В обработчике событий watcher_Changed перечислены файлы, к которым проигрыватель Flash IDE обращался или записывал их, и вот что получилось.

Мой контейнер SWF"basemovie3.swf" (основной файл проекта), загружен из каталога:

"C:\Users\[your_username]\AppData\Local\Adobe\Flash CS6\en_US\Configuration\CodeModel\cm-cache\SwcCache\basemovie3.swc1272273593\library.swf"

Удаленный SWF"l003s.swf" (кешируемый проблемный файл) был загружен из каталога:

"C:\Users\[your_username]\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\IGH0THHW\l003s[1].swf"

Так что у вас это есть. Удаленно загруженный SWF-файл был загружен из кэша временных файлов Интернета.

Несмотря на добавление строки запроса в форме «? Random = randomnumber & timestamp = currenttime» к URL-адресу удаленно загруженного файла «l003s.swf», наблюдатель файловой системы вообще сообщал об отсутствии записи в любые SWF-файлы, несмотря на попытки загрузки файл несколько раз с различными строками запроса и еще несколько попыток после обновления файла на сервере.

Кажется, что лучший способ очистить файл - это открыть меню «Пуск» и ввести «Временный», щелкнув любой из параметров «Изменить настройки временных файлов Интернета», «Удалить файлы cookie или временные файлы», или "Удалить историю браузера". Все они приведут вас к окнам Временных настроек Интернета, где вы сможете удалить историю посещенных страниц и кэши.

2 голосов
/ 12 августа 2010

Это чисто предположение, но я подозреваю, что Flash делает запрос через ОС, а результаты кэшируются где-то еще.В любом случае, одним из распространенных способов решения таких проблем является добавление бессмысленной переменной к вашему запросу - например, загрузка данных из server.com/script.php?random=209327, где число, конечно, рандомизировано.Таким образом, URL-адрес каждого запроса не соответствует ни одному из предыдущих запросов, и вы не получите кэшированный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...