Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   [Алгоритмы] Как ущнать закеширован ли SWF перед загрузкой? (http://www.flasher.ru/forum/showthread.php?t=209636)

Xpb7 02.12.2014 21:16

Как ущнать закеширован ли SWF перед загрузкой?
 
Добрый день,
Имеется ли возможность узнать закеширован ли SWF по конкретному URL или нет?
Весь интернет облазил, нашел почти нужное решение через JS, но только для картинок:
Код:

function cached(url)
{
      var test = document.createElement("img");
      test.src = url;
      return test.complete || test.width+test.height > 0;
}

HTTP статус видел советовали проверять, но он 200 (а вроде должен быть 304 в случаях кешированного ответа).
Никто не сталкивался? Посоветуйсте, пожалуйста.

in4core 02.12.2014 22:09

Была похожая задача, проверять наличие посл версии софта и если версия новая - обновлять. Тут у вас смысл приблизительно похож. Решений, кроме как грузить XML с версией до загрузки внтуренних ресурсов - не нашлось. То есть основная флешка, все равно не проверяется, только те, что подгружаются. Думаю стоит обратить внимание на php - там наверняка можно узнать о кеше, при запуске и передать во флешварс нужную переменную.

Tails 03.12.2014 20:36

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

caseyryan 04.12.2014 10:13

а зачем это узнавать? Просто можно при загрузке передавать в ссылке случайный параметр, и флешка будет каждый раз грузиться заново

in4core 04.12.2014 14:31

Цитата:

а зачем это узнавать? Просто можно при загрузке передавать в ссылке случайный параметр, и флешка будет каждый раз грузиться заново
Костя вообще то есть правила хорошего тона в этом вопросе, смотри : я захожу в твою игру, которая весит скажем 50 мб, грузится не быстро, если интернет не очень, в конечном итоге это начинает злить, что каждый раз такая долгая загрузка, - ты начинаешь кешировать флешку, а по скольку флешка кеширована, ты не можешь поставить НОВУЮ версию для пользователя с кешем.
Надо прибегать к php - там явно все это описывается как работать с кешем

gloomyBrain 04.12.2014 14:44

Мне лично больше всего нравится такой вариант: на старте приложение загружает список всех файлов и их версий. Выглядит примерно так:
Код:

{
    "graphics/my_picture.jpg": 1,
    "sounds/my_sound.mp3": 21,
    "resources/my_resources.swf": 37
}

Для загрузки этого списка (еще его называют манифестом) допустимо применить трюк с добавлением случайного числа к url запроса.

После того как манифест загружен, приложение загружает ресурсы по таким вот URL:
Код AS3:

server.com / graphics / my_picture.1.jpg
server.com / sounds / my_sound.21.mp3
server.com / resources / my_resources.37.swf

То есть включаем номер версии в имя файла. Разумеется такие файлы должны быть на сервере. То есть при загрузке файла на сервер мы добавляем к его имени порядковый номер, и в этот же момент обновляем манифест, куда этот номер прописываем.
Таким образом клиент всегда получает либо версию из кеша, либо свежую версию, и никогда не грузит один и тот же файл дважды (как в варианте со случайным числом в URL)

КорДум 04.12.2014 15:23

Глуми, а разве не проще не использовать файлы вида "<name>.<version>.<ext>", а добавлять к URL версию файла, полученную из "манифеста"?
Цитата:

http://host/file.ext?25
Браузер возьмет либо из кэша, если с такого URL Была загрузка, либо подумает, что он новый.

zuxul 04.12.2014 18:33

Еще выгоднее вставлять не версии, а какие-нибудь хеши от файла, например, crc32, тогда возможно, что у Вас в игре, допустим, какая-нибудь временная акция, и нужно обновить картинку, а через некоторое время акция проходит, и нужно вернуть то что было до этого.

Xpb7 04.12.2014 20:55

Ребят, спасибо за овтеты. Задача такая:
Есть некий flash wrapper, который грузит в сбея основную игру ( другую swf ), когда игра загрузилась, логгируется время её загрузкы. Для аналитиков важно знать была ли игра загружена из кеша ( что напрямую влияет на время загрузки ) или нет.


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

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