Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Кэш и Flash (http://www.flasher.ru/forum/showthread.php?t=144382)

expl 11.09.2010 21:56

Цитата:

А по-подробнее
Вот поподробнее не могу - апач настраивал серверист.
Вобщем php-шники должны быть в курсе.

Кстати, первая строчка сверху в Google, вроде в тему:
Настройка времени кеширования запроса апач

Цитата:

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

Цитата:

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

mikhailk 11.09.2010 23:46

А я лично отдаю решение вопросов что грузить, что не грузить на усмотрение флэшплеера.

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

И чего-то мне кажется, если файл resource003.swf (а еще пуще - resourceConfig.xml) в браузере закэшировался, то никакие пляски с бубном на стороне сервера ничего не изменят. Пользователи смотрят приложение через такой зоопарк браузеров, что где-нибудь что-нибудь у кого-нибудь закэшируется по-любому.

expl 12.09.2010 00:09

Цитата:

Сообщение от mikhailk (Сообщение 935149)
И чего-то мне кажется, если файл resource003.swf (а еще пуще - resourceConfig.xml) в браузере закэшировался, то никакие пляски с бубном на стороне сервера ничего не изменят. Пользователи смотрят приложение через такой зоопарк браузеров, что где-нибудь что-нибудь у кого-нибудь закэшируется по-любому.

Ну, я бы не называл использование функционала http плясками с бубном (.htaccess всего-навсего поправить)
А по поводу зоопарка бравзеров - чтож, посмотрим, если огребем проблем - сделаем загрузку списка файлов,
но пока надеемся на автоматику - все же на один файл меньше грузить и гемора тоже поменьше. Так что пока обкатываем этот подход.

gloomyBrain 12.09.2010 00:18

@mikhaik
Цитата:

если файл resource003.swf (а еще пуще - resourceConfig.xml) в браузере закэшировался, то никакие пляски с бубном на стороне сервера ничего не изменят.
На сколько я знаю, процесс загрузки происходит примерно так:

0) получаем имя необходимого файла

1) смотрим есть ли файл в кеше - да есть
1.1) если есть - посылаем запрос на сервер с указанием даты, когда закешировали файл
1.2) получаем ответ от сервера - изменился файл или нет с той поры
1.3) если не изменился - грузим из кеша

2) файла нет в кеше или он устарел - грузим заново

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

@expl
Цитата:

Тут уж кому что - кому удобнее написать простенький скрипт и грузить его флешкой (у нас постоянно там какой-нибудь файл забывали добавить), а кому проще настроить сервер и не париться с этим на клиенте
Сервер может пойти двумя путями - либо выдавать заголовок last-modified с текущей датой (тогда можно считать, что в кеш ничего не попадает), либо сохранять какой-то конфиг в БД и при каждом запросе отдавать last-modified оттуда.
Первый вариант не подходит в силу своей бесполезности.
Второй - в силу того, что наши серверники любят экономить запросы к БД и бьют меня линейкой за такое предложение =)

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

UPD
Да, для Apache 2.1 модуль mod_mem_cashe перестал быть экспериментальным и позволяет хранить в оперативной памяти сервера дату последней модификации файла. Но memCahse? стоит ли оно того в данном случае?

expl 12.09.2010 12:01

Цитата:

Сервер может пойти двумя путями - либо выдавать заголовок last-modified с текущей датой (тогда можно считать, что в кеш ничего не попадает), либо сохранять какой-то конфиг в БД и при каждом запросе отдавать last-modified оттуда.
Первый вариант не подходит в силу своей бесполезности.
Второй - в силу того, что наши серверники любят экономить запросы к БД и бьют меня линейкой за такое предложение =)
Цитата:

Да, для Apache 2.1 модуль mod_mem_cashe перестал быть экспериментальным и позволяет хранить в оперативной памяти сервера дату последней модификации файла. Но memCahse? стоит ли оно того в данном случае?
Даже так...
Надо попытать нашего сервериста на предмет этих граблей

mikhailk 12.09.2010 20:06

Цитата:

Сообщение от gloomyBrain (Сообщение 935158)
@mikhaik

На сколько я знаю, процесс загрузки происходит примерно так:

0) получаем имя необходимого файла

1) смотрим есть ли файл в кеше - да есть
1.1) если есть - посылаем запрос на сервер с указанием даты, когда закешировали файл
1.2) получаем ответ от сервера - изменился файл или нет с той поры
1.3) если не изменился - грузим из кеша

2) файла нет в кеше или он устарел - грузим заново

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

Не буду спорить.

Я как раз сейчас последний проект работал в команде, где второй AS3-программист исходил именно из этого. По каждому уровню у него грузилось несколько файлов - и xml-ки и картинки и swf-ки и 3ds-модельки... Уровней более 10, т.е всего около сотни файлов. Когда уже приложение было собрано и начали активно дорабатывать и заменять уровни, влетели в проблему с кэшированием по полной. :)

etc 13.09.2010 11:54

А у нас был xml-файлик с timestamp-ами всех файлов. Загрузка файликов производилась по ссылке file.ext?12345678. xml-файлик при это обновлялся после обновления файла. В результате старые файлы не загружались по новой, а новые — из кеша.

mikhailk 13.09.2010 12:50

а что происходило, если пользователь у себя кэш почистил ручками?
или там для старых было без "?12345678" ?

etc 13.09.2010 13:38

Цитата:

Сообщение от mikhailk (Сообщение 935434)
а что происходило, если пользователь у себя кэш почистил ручками?
или там для старых было без "?12345678" ?

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

Для всех файлов был указан timestamp.


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

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