Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Кэширование статичных объектов
Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011 Откуда: Россия
Помог: 0 раз(а)
В сети везде советуют делать это через nginx, а я хочу научиться без всяких плюшек.
На мысль подтолкнуло это, там есть полезные расширения для браузера, которые анализируют указанные странички ну и советуют, соответственно, что надо сделать, чтобы работало быстрее.
Мне было предложено кэшировать статические элементы, такие, как css, js, img. Я прочел еще это, картина прояснилась,но остались некоторые вопросы.
То есть для странички, которая обновляется по понедельникам, можно спокойно указать
Непонятно также, как кэшировать css, js и картинки. На гугл девелоперс предлагается присваивать “отпечатки” по URL, например, так. Это все хорошо, но в папке-то лежит css.css, а не 82b6bc440914c01297b99b4bca641a5d css.css. Или при каждом изменении css надо прописывать “128-bit hexadecimal number”? И опять же, header используется до первого вывода, как мы отошлем заголовок, если нам надо прочесть “отпечаток”? Как-то не совсем понятно.
Есть какие идеи, как это можно реализовать? Или есть механизм получше? Ну уж точно не по md5
----- In Console We Trust. Code hard. Or die.
KingStar
Отправлено: 15 Августа, 2012 - 14:31:16
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
ИМХО полезные расширения для браузера о которых ты говоришь не у каждого будет установлено, и браузеров и их версий также несметное количество, если уж ты так заботишься об пользователе и скорости загрузки странички в его браузере, то лучше делай со всякими плюшками, тем более что ты сам заметил, что их везде советуют
----- То что программа работает, не означает что она написана правильно!
Stierus
Отправлено: 15 Августа, 2012 - 14:33:52
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
То, что вы описали ниже - это кеширование на стороне клиента.
Цитата:
Непонятно также, как кэшировать css, js и картинки.
Вы не поверите, но ненавистным вам nginx - выставляйте те же заголовки expires
Если у вас четкое расписание обновлений - настройте nginx на отдачу этих заголовков и все, если вам нужно статику кешировать, но при этом вы не знаете, когда она будет меняться - делайте версионность (main.css теперь выглядит как main.css/v2). Для этого урла у вас будет expires и кэширование на стороне браузера, как только у вас новая версия - вы в своем приложении урлы main.css/v2 заменяете на main.css/v3
Tox
Отправлено: 15 Августа, 2012 - 14:34:16
Посетитель
Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011 Откуда: Россия
Помог: 0 раз(а)
KingStar
не о расширениях для браузера речь. Совершенно нормальная тема - кэшировать статичные элементы. Вопрос в том, как.
----- In Console We Trust. Code hard. Or die.
DeepVarvar
Отправлено: 15 Августа, 2012 - 15:12:32
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011 Откуда: Россия
Помог: 0 раз(а)
Stierus
то есть другого метода нет. надо садится за nginx?
----- In Console We Trust. Code hard. Or die.
Stierus
Отправлено: 15 Августа, 2012 - 15:45:16
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
вы как-то иначе сможете выставлять заголовки отдаваемым по http файлам?
DlTA
Отправлено: 15 Августа, 2012 - 15:57:42
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
непонятная проблема,
все статические файлы при отдаче сервером имеют в заголовке дату последней моидфикации, при повторном опросе браузер автоматом указывает от какой даты файлы он уже имеет в кеше, если по датам обновления не проходило, то сервак кидает 300 какую то там, что мол содержимое не изменилось. что еще надо?
DeepVarvar
Отправлено: 15 Августа, 2012 - 16:06:02
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DlTA пишет:
при повторном опросе браузер автоматом указывает от какой даты файлы он уже имеет в кеше, если по датам обновления не проходило, то сервак кидает 300 какую то там
При повторном опросе браузер даже не опрашивает сервер, а сразу берет из кеша. Сервер отдает заголовки группы Modified/Expires/Date в зависимости от ситуации. Сервер никогда не может отдавать только заголовок при наличии файла по запрошенному пути, он отдает файл всегда, если тот был запрошен.
Заголовки несут чисто информативный характер. Браузер при первичном запросе файла анализирует заголовки и принимает решение кешировать или нет.
При повторном обращении браузер не запрашивает закешированные файлы, если не указано иное в принятых ранее заголовках.
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
DeepVarvar пишет:
При повторном опросе браузер даже не опрашивает сервер, а сразу берет из кеша
это при условии что при первом запросе указано как долго этот файл не будет модифицирован
DeepVarvar
Отправлено: 15 Августа, 2012 - 16:15:57
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DeepVarvar пишет:
если не указано иное в принятых ранее заголовках
(Добавление)
DlTA пишет:
при первом запросе указано как долго этот файл не будет модифицирован
Нельзя так указать. Можно указать время устаревания файла (Expires).
А вот как долго он будет не модифицирова - неизвестно никому.
Заголовок о модификации приедет только тогда когда изменится время последнего изменения файла (Last Modified).
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
DeepVarvar пишет:
Нельзя так указать. Можно указать время устаревания файла (Expires).
А вот как долго он будет не модифицирова - неизвестно никому.
Заголовок о модификации приедет только тогда когда изменится время последнего изменения файла (Last Modified).
не лбом так полбу
DeepVarvar
Отправлено: 15 Августа, 2012 - 19:11:37
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DlTA пишет:
не лбом так полбу
Таки нет. Если Экспирес просрочил, то браузер пойдет за файлом, даже если тот на сервере не изменялся.
А если файл на сервере изменился, а экспирес еще не просрочил, то браузер за файлом не пойдет.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.