Продолжаем начатый в прошлый раз разговор об ускорении веб-сайтов. Сегодня речь пойдет о настройке кэширования и сжатия Gzip, но не забывайте, что скорость и стабильность работы сайтов зависит также и от сервера. Подобрать хороший сервер вы можете по этому адресу.
Настройка кэширования
Пожалуй первое, что нужно предпринять в плане ускорения сайта — это настроить кэширование. Принцип браузерного кэширования прост: когда пользователь посещает веб-страницу, браузер сохраняет ресурсы для ее отображения в специальную папку (кэш) на жестком диске пользователя (или в памяти). Содержимое веб-страницы таким образом переносится максимально близко к клиенту, что позволяет ускорить загрузку страницы и снизить нагрузку на сервер при повторном ее посещении, ведь данные теперь не нужно заново скачивать с сервера. Кроме того, если пользователь перейдет на другую страницу сайта, он тоже получит выигрыш в скорости, так как основные стилевые таблицы, скрипты, и элементы дизайна уже сохранены в кэше.
Работает эта система через специальные заголовки Cache-Control и Expires. Через эти заголовки и их атрибуты, сервер, на котором размещена информация, указывает браузеру клиента время жизни кэша, на протяжении которого данные не нужно повторно запрашивать с сервера.
Но есть вероятность, что страница была изменена с момента ее кэширования, поэтому браузеру нужно проверять актуальность кэша. Для этого он должен сопоставить кэшированную версию документа с текущей версией на сервере. Реализуется это через заголовки ETag и Last-Modified. Они присваивают файлам уникальные идентификаторы, которые меняются вместе с изменением файла. Если документ не изменился, сервер отвечает статус-кодом 304 (Not Modified), тем самым давая браузеру понять, что ресурс не изменился и его не нужно скачивать заново.
В итоге счастливы все: пользователи получают более быстрый ответ, соединение быстрее освобождается и экономятся ресурсы сервера.
В WordPress кэширование можно организовать с помощью специальных плагинов, наиболее популярными из которых являются WP Super Cache и W3 Total Cache. Я рекомендую второй — он имеет более гибкие настройки и кучу дополнительного функционала.
Сжатие Gzip
Cуть данной технологии заключается в том, что текстовые данные перед отправкой пользователю сжимаются в zip-архив. Это позволяет уменьшить их объем примерно в 5 раз и увеличить общую скорость загрузки страниц на десятки, а иногда и на сотни процентов.
Получение сжатого контента между браузером клиента и сервером тоже осуществляется через заголовки. Браузер, давая понять, какие типы сжатия он поддерживает, отправляет серверу заголовок AcceptEncoding:
Accept-Encoding: gzip, deflate
Сервер, видя этот заголовок, сжимает данные одним из указанных методов, и отвечает клиенту заголовком Content-Encoding с указанием способа сжатия содержимого:
Content-Encoding: gzip
Gzip-сжатие практически не вызывает нагрузки на браузер клиента, так как распаковка данных происходит очень быстро, практически мгновенно. Нагрузка же на сервер возможна только в случае динамического сжатия в реальном времени. Поэтому на высоконагруженных проектах лучше использовать статическое сжатие.
В WordPress’е включить сжатие можно прямо в плагине W3 Total Cache.