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 :: Кэширование статичных объектов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Tox
Отправлено: 15 Августа, 2012 - 14:00:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




В сети везде советуют делать это через nginx, а я хочу научиться без всяких плюшек.
На мысль подтолкнуло это, там есть полезные расширения для браузера, которые анализируют указанные странички ну и советуют, соответственно, что надо сделать, чтобы работало быстрее.
Мне было предложено кэшировать статические элементы, такие, как css, js, img. Я прочел еще это, картина прояснилась,но остались некоторые вопросы.
То есть для странички, которая обновляется по понедельникам, можно спокойно указать
PHP:
скопировать код в буфер обмена
  1. $dt_tmp=getdate(date("U"));
  2. header("Expires: " . gmdate("D, d M Y H:i:s",
  3.         date("U")-(86400*($dt_tmp["wday"]-8))) . " GMT");
  4. header("Cache-control: public");


А если каждый месяц, то так:
PHP:
скопировать код в буфер обмена
  1. header("Expires: " . gmdate("D, d M Y H:i:s",
  2.         date("U")-(86400*($dt_tmp["mon"]-13))) . " GMT");

?

Непонятно также, как кэшировать css, js и картинки. На гугл девелоперс предлагается присваивать “отпечатки” по URL, например, так. Это все хорошо, но в папке-то лежит css.css, а не 82b6bc440914c01297b99b4bca641a5d css.css. Или при каждом изменении css надо прописывать “128-bit hexadecimal number”? И опять же, header используется до первого вывода, как мы отошлем заголовок, если нам надо прочесть “отпечаток”? Как-то не совсем понятно.
Есть какие идеи, как это можно реализовать? Или есть механизм получше? Ну уж точно не по md5 Улыбка


-----
In Console We Trust. Code hard. Or die.
 
 Top
KingStar
Отправлено: 15 Августа, 2012 - 14:31:16
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




ИМХО полезные расширения для браузера о которых ты говоришь не у каждого будет установлено, и браузеров и их версий также несметное количество, если уж ты так заботишься об пользователе и скорости загрузки странички в его браузере, то лучше делай со всякими плюшками, тем более что ты сам заметил, что их везде советуют


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Stierus Супермодератор
Отправлено: 15 Августа, 2012 - 14:33:52
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




То, что вы описали ниже - это кеширование на стороне клиента.
Цитата:
Непонятно также, как кэшировать css, js и картинки.
Вы не поверите, но ненавистным вам nginx - выставляйте те же заголовки expires

Если у вас четкое расписание обновлений - настройте nginx на отдачу этих заголовков и все, если вам нужно статику кешировать, но при этом вы не знаете, когда она будет меняться - делайте версионность (main.css теперь выглядит как main.css/v2). Для этого урла у вас будет expires и кэширование на стороне браузера, как только у вас новая версия - вы в своем приложении урлы main.css/v2 заменяете на main.css/v3
 
My status
 Top
Tox
Отправлено: 15 Августа, 2012 - 14:34:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




KingStar
не о расширениях для браузера речь. Совершенно нормальная тема - кэшировать статичные элементы. Вопрос в том, как.


-----
In Console We Trust. Code hard. Or die.
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Августа, 2012 - 15:12:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Уже же разжевали как.
 
 Top
Tox
Отправлено: 15 Августа, 2012 - 15:35:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




Stierus
то есть другого метода нет. надо садится за nginx?


-----
In Console We Trust. Code hard. Or die.
 
 Top
Stierus Супермодератор
Отправлено: 15 Августа, 2012 - 15:45:16
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




вы как-то иначе сможете выставлять заголовки отдаваемым по http файлам?
 
My status
 Top
DlTA
Отправлено: 15 Августа, 2012 - 15:57:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




непонятная проблема,
все статические файлы при отдаче сервером имеют в заголовке дату последней моидфикации, при повторном опросе браузер автоматом указывает от какой даты файлы он уже имеет в кеше, если по датам обновления не проходило, то сервак кидает 300 какую то там, что мол содержимое не изменилось. что еще надо?
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Августа, 2012 - 16:06:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DlTA пишет:
при повторном опросе браузер автоматом указывает от какой даты файлы он уже имеет в кеше, если по датам обновления не проходило, то сервак кидает 300 какую то там
При повторном опросе браузер даже не опрашивает сервер, а сразу берет из кеша. Сервер отдает заголовки группы Modified/Expires/Date в зависимости от ситуации. Сервер никогда не может отдавать только заголовок при наличии файла по запрошенному пути, он отдает файл всегда, если тот был запрошен.
Заголовки несут чисто информативный характер. Браузер при первичном запросе файла анализирует заголовки и принимает решение кешировать или нет.
При повторном обращении браузер не запрашивает закешированные файлы, если не указано иное в принятых ранее заголовках.
 
 Top
DlTA
Отправлено: 15 Августа, 2012 - 16:12:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




DeepVarvar пишет:
При повторном опросе браузер даже не опрашивает сервер, а сразу берет из кеша
это при условии что при первом запросе указано как долго этот файл не будет модифицирован
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Августа, 2012 - 16:15:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DeepVarvar пишет:
если не указано иное в принятых ранее заголовках

(Добавление)
DlTA пишет:
при первом запросе указано как долго этот файл не будет модифицирован
Нельзя так указать. Можно указать время устаревания файла (Expires).
А вот как долго он будет не модифицирова - неизвестно никому.
Заголовок о модификации приедет только тогда когда изменится время последнего изменения файла (Last Modified).
 
 Top
DlTA
Отправлено: 15 Августа, 2012 - 17:28:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




DeepVarvar пишет:
Нельзя так указать. Можно указать время устаревания файла (Expires).
А вот как долго он будет не модифицирова - неизвестно никому.
Заголовок о модификации приедет только тогда когда изменится время последнего изменения файла (Last Modified).
не лбом так полбу
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Августа, 2012 - 19:11:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DlTA пишет:
не лбом так полбу

Таки нет. Если Экспирес просрочил, то браузер пойдет за файлом, даже если тот на сервере не изменялся.
А если файл на сервере изменился, а экспирес еще не просрочил, то браузер за файлом не пойдет.
 
 Top
DlTA
Отправлено: 16 Августа, 2012 - 00:29:12
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




DeepVarvar пишет:
Если Экспирес просрочил, то браузер пойдет за файлом, даже если тот на сервере не изменялся
откуда сервер знает когда пройдет срок годности для статичных файлов?
имеется только дата модификации, которой и оперируют.
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Августа, 2012 - 12:49:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DlTA пишет:
откуда сервер знает когда пройдет срок годности для статичных файлов?
Сервер не знает, ему всеравно, а вот браузер знает, ему же заголовки отправлялись в предыдущий раз.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB