Модераторы: SoWa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кеширование и loadMovie 
V
    Опции темы
Ramirez
Дата 26.2.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Добрый день!

Не могу понять принцип кеширования. Вот в цикле выполняю следующий код:

Код

var mc:MovieClip = this.createEmptyMovieClip("clip"+i, this.getNextHighestDepth());
mc.loadMovie("image.gif");



т.е. несколько раз подгружаю одну и туже внешнюю картинку. Мне казалось, что после первой загрузки флеш должен был засунуть ее в кеш и след. раз брать уже оттуда, но практика показывает что он загружает ее каждый раз заново. Я что-то не правильно делаю, или надо реализовывать такой кеш самостоятельно?
PM ICQ   Вверх
AntonioBanderaz
Дата 26.2.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Цитата(Ramirez @  26.2.2007,  19:01 Найти цитируемый пост)
т.е. несколько раз подгружаю одну и туже внешнюю картинку. Мне казалось, что после первой загрузки флеш должен был засунуть ее в кеш и след. раз брать уже оттуда, но практика показывает что он загружает ее каждый раз заново. Я что-то не правильно делаю, или надо реализовывать такой кеш самостоятельно? 

Кэширует браузер.

Добавлено @ 22:57 
а ты всё правильно делаешь )


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Ramirez
Дата 21.3.2007, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



И всетаки мне не совсем понятно. Я смотрю при отладке в bandwidth profiler и он я вно показывает, что при каждом вызове loadMovie он загружает мувик заново. Как всетаки работает алгоритм кеширования, если он есть? И есть-ли разница что подгружается, клип или картинка?

Это сообщение отредактировал(а) Ramirez - 21.3.2007, 01:43
PM ICQ   Вверх
AntonioBanderaz
Дата 21.3.2007, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



да для браузера никакой разницы... ты ведь когда заходишь на сайт, на который ты заходишь каждый день, у тя картинки заного не грузятся в сессию, так? тут таже фигня, но не всегда, браузерные настроки везде разные... 

если ты хочешь сднлать свой механизм кеширования, это можно, но только на AS3 smile 


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Ramirez
Дата 21.3.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Тоесть, ты хочешь сказать, что flash player загружает данные средствами браузера? Никогда бы не подумал. Хотя вполне вероятно... Жаль в манах об этом ни слова...
А насчет своего механизма кеширования, мне кажется, что кеширование в памяти можно сделать и на AS2. Создать массив MovieClip и обертку для loader'a. Чтобы при вызове лоадера, он сначала смотрел запрошеный клип в массиве и если там нет, то загружал клип и копию в массиве сохранял... Или это не очень хорошая идея?

Это сообщение отредактировал(а) Ramirez - 21.3.2007, 11:49
PM ICQ   Вверх
AntonioBanderaz
Дата 21.3.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



ну просто ты duplicate не сделаешь, от загруженного MC


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AlDev
Дата 21.3.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 8
Всего: 50



Цитата(AntonioBanderaz @  21.3.2007,  18:19 Найти цитируемый пост)
ну просто ты duplicate не сделаешь, от загруженного MC 

AntonioBanderaz, да ну нафиг. BitmapData зачем нужна?

PM MAIL WWW ICQ YIM MSN   Вверх
AntonioBanderaz
Дата 21.3.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



ну дык, этож просто статика... 


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
szz
Дата 22.3.2007, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 6
Всего: 33



Мы ведь обсуждали это... не получится... БитмапДата не сохранить интерактивный свф.

Цитата
flash player загружает данные средствами браузера? Никогда бы не подумал.

  А че удивляться, плеер то в браузере и бежит )))

Единственный способ заставить кэшировать - это отправлять хедеры от сервера. 
Я например все что иднт на лоадМуви - сфвки, картинки - пропускаю через php скрипт, т.е. обращение выглядит так:

http://server.com/getforloadmovie.php?content=swfs/movie.swf

По идее передача с параметром наоборот заставляет браузер насторожиться и не кешировать.

Но если отдать перед выводом в php хедеры управлением кэша, то все начинает работать отлично, во всяком случае управляемо.
  У меня например вот такой вот getforloadmovie.php:
Код
<?
    // имя файла:
    $filename = $_REQUEST['content'];
    // давайте проверим есть ли вообще такой файл:
    if(!file_exists($filename)){
        // нету. Тогда давайте заменим картинкой, на которой написано "Такого файла нету!" 
        $filename = "some_files/no_file_image.jpg";
    }
    // на сколько дней кэшировать будем?
    $cash_days = 10;
    // характер содержимого необязательно выдавать, но на всякий случай лучше указать:
    header('Content-disposition: inline; filename="'.basename($filename).'"');
    // вываливаем хедеры для кэша:
    header('Expires: ' . gmdate('D M d G:i:s Y', time() + intval(60 * 60 * 24 * $cash_days)) . ' GMT');
    header('Cache-Control: max-age=15552000, private');
    header('Pragma: Cache');
   
    // еще хедер для типа файла:
    header('Content-Type: ' . mime_content_type($filetype));

    // и еще хедер :)   для размеров файла, чтоб браузер знал сколько ему качать вообще
    // тож необяхательно, но лучше выдать:
    header('Content-length: ' . filesize($filename));
    
   // а теперь вывалим само содержимое:
   echo file_get_contents($filename);
   // и, опять же на всякий случай, умираем насильственной смертью:
   die;
?>



--------------------
PM   Вверх
Ramirez
Дата 22.3.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



szz, интересная идея. спасибо!
PM ICQ   Вверх
anderw
Дата 19.2.2011, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2011

Репутация: нет
Всего: нет



Цитата

Единственный способ заставить кэшировать - это отправлять хедеры от сервера. 


не согласен.
можно, например, сделать кэширование и средствами actionscript локально
правда в зависимости от условия это решение может оказать непростым.

но решение к приведенному примеру теоретически в as2 могло бы быть следующим:
нужно организовать свой загрузчик,
он должен создавать новый MovieClip, выставлять для него координаты,
далее "подтаскивать" в него изображение,
изображение больше не нужно - тушить, понадобилось - показывать его снова,
можно даже дублировать, если понадобилось второе

все что нужно это находить загруженное ранее изображение и соотв.объект

сам набрел сюда в поиске подобного решения...
или я не прав и все не так?
PM MAIL WWW   Вверх
AlDev
Дата 19.2.2011, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 8
Всего: 50



Ну вы и некромант.
Проблема решается тупее некуда:
Код

var loader:URLLoader = new URLLoader();
loader.load(new URLRequest(path+"?timestamp="+new Date().getTime().toString()));


то есть добавляем к запросу timestamp и радуемся
PM MAIL WWW ICQ YIM MSN   Вверх
anderw
Дата 19.2.2011, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2011

Репутация: нет
Всего: нет



здорово! )
а если речь идет о as2, а Класс URLLoader это ActionScript 3.0 ?

PM MAIL WWW   Вверх
SoWa
Дата 19.2.2011, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Я чего-то не понимаю?
А почему нельзя сперва эту картинку подгрузить, куданить сложить, а потом уже создавать динамически Мувиклипы и в них её засовывать?

Добавлено через 43 секунды
Ой ой, некропостинг.

Добавлено через 1 минуту и 19 секунд
Ладно, пусть будет.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
anderw
Дата 19.2.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2011

Репутация: нет
Всего: нет



SoWa
а что значит "динамически подгрузить и куда-нибудь сложить", извините )
как раз подобное я предложил, разве нет?

мои условия:
1. программирование на as2, и больше ничего нет,
2. сервер сконфигурировать не удастся, почему --военная тайна
причем это реальная задача

Это сообщение отредактировал(а) anderw - 19.2.2011, 20:39
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




[ Время генерации скрипта: 0.1521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.