Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Про кэш броузеров и Loader. (http://www.flasher.ru/forum/showthread.php?t=137814)

Tr1te 23.03.2010 13:32

Про кэш броузеров и Loader.
 
Флэш запускается из броузера.
Во флеше создан класс(1).
И есть другой класс(2), в котором прописана загрузка с сервера картинки.

И многократно, к главному (1) добавляю (addChild) класс(2). Что Loader будет делать в такой ситуации.

-Сначала, проверит кэш броузера, есть ли такая же картинка (по названию). И если есть то просто загрузит из кэша.

-Или будет у сервера узнавать какая картинка (например хэш), и сравнивать с кэшем броузера. И если есть то просто загрузит из кэша.

-Или будет все время загружать картинку с сервера.

iflamberg 23.03.2010 13:59

-Сначала, проверит кэш броузера, есть ли такая же картинка (по названию). И если есть то просто загрузит из кэша.

Tr1te 23.03.2010 14:08

Тоесть можно подсунуть любую картинку в кэш с одноименным названием и он ее загрузит.

AlexDesinger 23.03.2010 14:12

по-моему смотрит что хочет загрузить лоадер, сравнивает с кэшем, если есть, то из кэша, только по-моему смотрит не только по названию.

Tr1te 23.03.2010 14:18

Цитата:

Сообщение от AlexDesinger (Сообщение 895040)
только по-моему смотрит не только по названию.

Ну значит все таки он обращается к серверу. Потому что кроме названия на клиенте ничего нет.

iflamberg 23.03.2010 14:44

интересно мне, как ты в кеш еу картинку подсунешь

Tr1te 23.03.2010 14:47

Это уже другой топик. А пока...

Ну значит все таки он обращается к серверу при каждом создании loader'а?

iflamberg 23.03.2010 14:51

нет он не обращается к серверу больше если в кеше лежит картинка с таким же ПОЛНЫМ путём.

Tr1te 23.03.2010 14:52

Большое спасибо.

dimarik 25.03.2010 18:03

Цитата:

Сообщение от Tr1te (Сообщение 895038)
Тоесть можно подсунуть любую картинку в кэш с одноименным названием и он ее загрузит.

Забавно, но поведение при загрузке флешом и браузером различаются.

Имеем уже загруженную картинку в кеше IE.

Если загружаем эту же картинку с помощью IE, то он отправит серверу запрос с заголовком If-Modified-Since.

Код:

GET /r/blogs/wait.gif HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)
If-Modified-Since: Wed, 02 May 2007 17:31:13 GMT
Host: img.mail.ru

Ну а дальше зависит от сервера - либо 303 Not Modified,

Код:

HTTP/1.1 304 Not Modified
Server: nginx/0.7.62
Date: Thu, 25 Mar 2010 13:37:31 GMT
Last-Modified: Wed, 02 May 2007 17:31:13 GMT
Expires: Thu, 01 Apr 2010 13:37:31 GMT

либо 200 OK.

Код:

HTTP/1.1 200 OK
Server: nginx/0.7.62
Date: Thu, 25 Mar 2010 14:02:43 GMT
Content-Type: image/gif
Content-Length: 1185
Last-Modified: Wed, 02 May 2007 17:31:13 GMT
Expires: Thu, 01 Apr 2010 14:02:43 GMT
Cache-Control: max-age=604800

Кстати, нажали Ctrl+F5, браузер шлет запрос без этого заголовка. Сервер честно отдает полный контент.


Если загружаем флешем, то флеш без вопросов воспользуется кешем и браузер даже не будет создавать запрос.

Чем это вредит? Вы обновили контент на сервере, а "мужики-то и не узнают".

Однако можно воспользоваться волшебным query string.
http://img.mail.ru/r/blogs/wait.gif?random=122222, где значение random генерируется случайным образом на флеше.

Чем это вредит? Каждый раз мужики загружают контент. Они тихо матерятся на неторопливость загрузки. У этой неторопливости два аспекта:

1) Высокая нагрузка на сервер, ведь ему приходится вместо краткого 304 Not Modified пересылать контент.
2) Ограниченная пропускная способность канала связи. Льем N метров графики. Значение N подставьте сами.

Исключить такое неджентельменское поведение можно лишь приняв комплекс мер.

Мое решение и оно успешно работает.
С сервера скачивается конфиг, в котором присутствуют сгенеренные ссылки на контент типа
r/blogs/wait.gif?ut=28289123. Т.е. генерация query string переносится на плечи сервера. Очень удобно использовать timestamp времени создания файла. Залили новый контент и флеш вытягивает только обновленные файлы.

По Вашему вопросу. Верно высказывание.
Цитата:

-Сначала, проверит кэш броузера, есть ли такая же картинка (по названию). И если есть то просто загрузит из кэша.
IE6 можно было подсунуть другой контент. Необходимо, чтобы совпадали размер (в байтах) и имя файла в кеше IE, например image[1].png. В более современных версиях IE не копался.


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

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