Хостинг. nginx - Leverage browser caching

a07
11 років
0
Товарищ Гугл очень рекомендует включить в ответ сервера параметр Expires или Cache-Control: max-age для того, чтобы браузер не запрашивал картинки с сервера, но брал из локального кеша. Этот параметр призван улучшить скорость загрузки сайта.
developers.google.com/speed/docs/best-practices/caching
Судя по всему, выдачей статических файлов на этом хостинге занимается сервер nginx, настроек к которому я нигде не нашел.

Уважаемые работники хостинга! Как включить рекомендуемый компанией Google параметр для ускорения сайта?
rudenko
11 років
0
А компания google не рассказывает о том, что при таком подходе разработку сайта нужно вести совсем другим способом. Пример:
1. Заходит пользователь и сохраняется у него в кеше статический файл style.css.
2. Заходит разработчик и вносит изменения в шаблоне сайта и правит файлик style.css. У разработчика все ок, так как он нажал Ctrl+F5 и у него все стянулось с сервера.
3. Возвращается пользователь, и открывает ваш сайт, при этом происходит закачка нового шаблона так как не относится к кешируемой статике. А вот файл style.css у него - старый, с совсем левыми стилями. В итог у всех ваших постоянных посетителей вылетает на месяц ваш сайт.
rudenko
11 років
0
Кстати, только что проверил на вашем сайте, nginx отдает заголовок expires + etag для статики. И в реальности на вашем сайте не происходит повторное получение картинок. отправляется запрос, а сервер отвечает 304 Not modified. Можете поставить себе Firefox + Firebug и во вкладке "Сеть" этого плагина посмотреть как общение с сервером происходит.
a07
11 років
0
> Проверить можно в FireBug во вкладке NET:
> обновите страницу 2 раза и посмотрите код ответа.
> Если 200 ОК, то не работает. Если 304 Not Modified, то работает.

Не точная методика проверки. При правильном кешировании вообще не должно быть запросов к серверу. Нужно не обновлять страницу в браузере, а щелкать по ссылкам — ходить то на одну страницу, то на другую и обратно.

304 Not Modified получается когда принудительно обновляем страницу или когда протухает время кеширования контента. Тогда браузер отправляет HTTP запрос серверу с заголовком If-Modified-Since (www.w3.org/Protocols/rfc2616/rfc2616-sec14.html). Сервер на этот запрос высылает контент, если файл был модифицирован, иначе говорит «304 Not Modified»…

habrahabr.ru/company/mkechinov/blog/105716/

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

Кеширование статики не обязательно производить на целый месяц. Даже 1 день здорово ускорит сайт, а если у кого-то остался старая версия файла, 1 день, как правило - не много
a07
11 років
0
Может у вас какая-то особая конфигурация сети, но у меня заголовка Expires нет. При первоначальном запросе ответ сервера:
HTTP/1.1 200 OK
Server: nginx/1.1.10
Date: Sun, 13 Jan 2013 22:31:02 GMT
Content-Type: image/jpeg
Content-Length: 27838
Last-Modified: Thu, 27 Dec 2012 09:36:48 GMT
Connection: keep-alive
Accept-Ranges: bytes

При обновлении ответ сервера:
HTTP/1.1 304 Not Modified
Server: nginx/1.1.10
Date: Sun, 13 Jan 2013 22:32:41 GMT
Last-Modified: Thu, 27 Dec 2012 09:36:48 GMT
Connection: keep-alive
Тема закрита.