Разработка сайтов

HTML-кэш

HTML-кэш

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

Почему одну и ту же страницу сайт собирает заново для каждого гостя

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

Неприятность в том, что эта работа повторяется. Десять человек открыли один и тот же раздел — сервер десять раз проделал одно и то же и получил один и тот же результат. Пока посетителей мало, разницы не видно. В час пик, когда идёт рассылка или реклама, сервер начинает выстраивать запросы в очередь, и страница, которая обычно открывалась за секунду, открывается за пять.

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

Две карточки замера одного раздела каталога: слева сборка повторяется на каждом заходе, справа второй заход отдаётся из готовой копии.
Слева сервер делает одну и ту же работу дважды. Справа повтор убрали.

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

Что не кладут в копию

  • Корзина и её счётчик — иначе человек увидит чужой или пустой набор товаров.
  • Оформление заказа и все шаги оплаты — там каждый экран индивидуален.
  • Личный кабинет, избранное, история заказов — персональные данные.
  • Поиск и запросы, которые подгружаются фоном, — ответ зависит от того, что ввели.
  • Страницы с ценой по договору или скидкой для конкретного клиента.

Сколько копия должна жить

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

Тип страницыРазумный срок копииНа что смотреть
Раздел каталогаОт получаса до нескольких часовКак часто меняются цены и наличие
Карточка товараЧасыЕсть ли на ней остаток и персональная цена
Статья, страница услугиСутки и большеМеняют редко, сброс делают руками при правке
Главная с акциейКороткий, часыАкция заканчивается по расписанию
Корзина, кабинет, поискНе кэшируют вовсеЭкран у каждого свой

ОриентирЕсли прайс правят раз в неделю, суточная копия никого не подведёт. Если цены меняются вслед за курсом или поставщиком, срок делают коротким, а сброс — автоматическим, по факту изменения.

Главная претензия владельцев к кэшу звучит одинаково: «поправили цену, а на сайте старая». Почти всегда это не поломка, а отсутствие договорённости — никто не решил, что происходит с сохранённой копией в момент правки. Хорошая настройка снимает вопрос: контент-менеджер просто работает в админке, а копии нужных страниц исчезают сами.

Порядок сброса после правки

  1. Определить, какие правки обязаны немедленно сбрасывать копию: цена, остаток, заголовок, статус товара.
  2. Настроить автоматический сброс для этих событий — включая раздел, в котором товар показывается, а не только саму карточку.
  3. Оставить у администратора кнопку ручного сброса на случай массовых правок и импорта прайса.
  4. После любого сброса открыть страницу в режиме инкогнито: первый заход будет обычным по скорости, второй — уже быстрым.
  5. Договориться, кто и как проверяет сайт после загрузки нового прайса, и записать это в регламент.

ПроверкаБыстрая страница со вчерашней ценой хуже медленной с правильной: человек приезжает или звонит с одной суммой, а слышит другую. Разбор таких ситуаций — в статье про кэш и устаревшую цену. Рядом по смыслу читаются HIT / MISS — как понять, отдали копию или собрали страницу заново, и TTFB — сколько человек ждал начала ответа.

HTML-кэш: как применяют

Серверный кэш включают там, где страница выглядит одинаково для всех: разделы каталога, статьи, главная, посадочные. Корзину, оформление заказа, личный кабинет и поиск из копии не отдают — там у каждого свой экран. Отдельно договариваются про сброс: после правки цены, остатка или текста копию нужно удалить, иначе сайт будет быстро и уверенно показывать людям вчерашние данные. Перед включением полезно померить, сколько страница собирается без кэша, — иначе непонятно, что именно ускорили.

Частые вопросы

Что такое HTML-кэш?

Это готовая копия страницы, которую сервер сохранил после первой сборки. Следующие посетители получают её сразу, пока копия не устарела и пока её не сбросили.

HTML-кэш простыми словами?

Как заранее распечатанный прайс у кассы: пока цены не менялись, его просто дают в руки. Поменялись — старую пачку выбрасывают и печатают новую.

Чем HTML-кэш отличается от кэша браузера?

Кэш браузера лежит у конкретного человека на устройстве и помогает только ему при повторном заходе. Серверный кэш лежит на сайте и ускоряет ответ сразу всем, в том числе тем, кто пришёл впервые.

Что нельзя кэшировать на сайте?

Всё, что зависит от конкретного человека: корзину и её счётчик, оформление заказа, личный кабинет, избранное, результаты поиска, страницы с персональной ценой или скидкой.

Почему после правки цены на сайте видно старую?

Чаще всего жива прежняя копия страницы: цена в базе уже новая, а посетителю отдают сохранённый ранее вариант. Помогает сброс копии нужных адресов, после него проверяют экран в режиме инкогнито.

Кэш нужен ради поисковиков или ради людей

Ради обоих, но по-разному. Человек просто быстрее видит страницу и реже уходит, а поисковые системы получают сайт, который стабильно отвечает при обходе и не проваливается по скорости на мобильных.

← К разделу «Разработка сайтов»