Как кэшировать сайты сегодня

В последнее время появилось большое количество CDN (Content Delivery Network, или сети доставки контента), которые нацелены на небольшие сайты и имеют доступные способы оплаты.

кеширование сайта

Зачем используются CDN

Они необходимы для быстрой доставки контента сайта в далекие от сервера места. Можно сказать, что CDN – это такой кэш, находящийся на прокси-сервере, который во многом делает лучше восприятие вашего сайта аудиторией, ускоряет и качественно доставляет содержимое пользователю независимо от его местоположения.

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

Существуют различные CDN. К примеру, push CDN предполагает ожидание ваших действий по пересылке данных конкретно в нее, и наоборот - pull CDN сама скачивает данные от вас. Pull CDN намного проще в реализации, подобная сеть без препятствий размещается перед сайтом.

Заголовки кэша

Многие pull CDN позволяют решить вопрос динамического содержимого путем ввода контроля кэша постранично. При этом применяются HTTP-заголовки.
Заголовки существуют в 2-х форматах, а именно: старый и новый. Здесь присутствует наличие различных опций, поэтому чтобы было проще разобраться, обратимся к немаловажным тэгам ETag и Cashe-Control.

Заголовок ETag

Он выполняет задание версии документа в любом виде. Имеет одно правило – его обозначение непременно обязано закрываться в кавычки.

На практике ETag применяется для того, чтобы проверить актуальность содержания кэша. Работает это таким образом. При повторном запросе пользователем какого-либо URL после перерыва его браузер применяет один из существующих If-заголовков в запросе, через него идет проверка значения ETag. Затем браузеру должно прийти сообщение об отсутствии изменений или же исчерпывающий ответ от сервера.
Тэг Cashe-Control

Может использоваться не только в запросе, но и, соответственно, в ответе.
Потенциально контролирует 2 вида кэша:

  • локальный – то есть, кэш, находящийся на диске техники, где запущен браузер;
  • общий – то есть, кэш между браузером и сервером, CDN.

Важно знать, что у Cashe-Control есть 3 вида директив:

  1. Кэшируемость, указывающая на место хранения копий данных: private, public, no-cache, no-store.
  2. Управление сроком хранения кэша: max-age=<seconds>, s-maxage=<seconds>.
  3. Проверка актуальности данных: immutable, must-revalidate, proxy-revalidate.

Работа с cookie

Что такое cookie? В общем, это заголовки HTTP-ответа, конкретнее, заголовок под названием Set-Cookie, который нужен для идентификации уникальности каждого пользователя.

Сохраняемая совместно с копией ответа cookie предполагает, что все посетители сайта получают из кэша одинаковую cookie, что является нежелательным. Помимо сессионных cookie существуют такие, которые задают во время исполнения с помощью Javascript (например, так работает Google Analytics).

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

Правильная разработка для хорошего кэширования

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

Здесь уместна такая стратегия: для всех отображать часть, предназначенную для всех, а корзину генерировать самостоятельно и впоследствии подгружать с помощью Javascript.

Обход кэша

Данный термин обозначает применение измененного ключа для обхода какого-либо элемента кэша. Сделать это можно, используя задание версий. Такая стратегия регулярно используется для всевозможных ресурсов (js, css и др.). Заключается она в подгружении ресурса с модификацией по URL-номеру версии. К примеру, числовая версия, хэш, временная метка и т.п.

Единственная загвоздка может заключаться в кэшировании HTML-страницы с запросом к нужному ресурсу по старой версии адреса.

Очистка кэша

Имеется в виду удаление какого-либо объекта из кэша, при этом должно быть произведено незамедлительное обновление. Удаление из кэша CDN одного или нескольких объектов возможно с использованием кодового слова PURGE в запросе. Но в некоторых случаях этот способ не идеален.

Тогда необходимы суррогатные ключи (или тэги кэша). Благодаря им есть возможность помечать кэшированные ответы особенными ключами, которые при необходимости легко удаляются.

Комментарии закрыты.