Кэширование сайта: как оно ускоряет страницы и когда мешает
Кэширование — это сохранение готового результата, чтобы не собирать его заново при каждом запросе. Сайт один раз формирует страницу, запоминает её и отдаёт следующим посетителям уже готовой: страницы открываются быстрее, а сервер выдерживает больше людей. Обратная сторона — устаревшие данные: если кэш не сбросить после правок, посетители видят старую версию. Ниже — какие бывают уровни кэша, что нельзя кэшировать, как его очищать и как настроить без сюрпризов.
«Мы поправили цену, а на сайте старая». «Разработчик говорит: очистите кэш». «После включения кэширования сайт стал летать, но корзина сошла с ума». Все три истории — про одно и то же явление, которое ускоряет большинство сайтов и одновременно вызывает больше всего непонимания.
Что такое кэш простыми словами
Каждый раз, когда посетитель открывает страницу, сайт собирает её заново: обращается к базе данных, вытаскивает товары, считает цены, подставляет шаблон. На это уходят десятые доли секунды и ресурсы сервера. Кэш — это готовый результат, сохранённый после первой сборки. Следующий посетитель получает уже собранную страницу, и сервер почти не работает.
Аналогия — кухня. Можно каждому гостю варить бульон с нуля, а можно сварить кастрюлю утром и разливать. Второе быстрее в разы, но если рецепт поменялся днём, гости до вечера будут получать старый бульон.
У любого кэша есть два параметра. Срок жизни — сколько времени сохранённая копия считается свежей. И правило сброса — событие, после которого копию выбрасывают досрочно: например, сохранение товара в админке. От того, как заданы эти два параметра, зависит, будет кэш помогать или мешать.
Какие бывают уровни кэширования
Кэш живёт в нескольких местах, и это главная причина путаницы. Когда вы «очистили кэш», а изменения не появились, обычно очищен один уровень, а старая версия лежит на другом.
| Уровень | Что хранит | Где находится | Как сбросить |
|---|---|---|---|
| Кэш браузера | Картинки, стили, скрипты | На устройстве посетителя | Ctrl+F5 или очистка данных браузера — только у себя |
| Кэш страниц | Готовый HTML страницы | На сервере: в памяти или на диске | Кнопка в плагине, админке или панели хостинга |
| Кэш объектов и запросов | Результаты тяжёлых запросов к базе | В Redis или Memcached на сервере | Из админки сайта или командой разработчика |
| Кэш кода | Подготовленный к выполнению код PHP | В памяти сервера (OPcache) | Сбрасывается при обновлении файлов или перезапуске PHP |
| CDN | Копии файлов, иногда страниц | На серверах сети доставки | В панели CDN-провайдера |
- Кэш браузера. Картинки, стили и скрипты сохраняются на компьютере посетителя, чтобы не качать их повторно. Поэтому второй визит на сайт всегда быстрее первого.
- Кэш страниц на сервере. Готовый HTML страницы хранится в памяти или на диске. Именно его включают плагины вроде WP Super Cache, и именно он даёт ускорение в 5–10 раз.
- Кэш базы данных и объектов. Результаты тяжёлых запросов запоминаются в Redis или Memcached — программах, которые держат данные в оперативной памяти. Важен для магазинов с большими каталогами.
- CDN. Копии файлов разбросаны по серверам в разных городах, посетитель получает их с ближайшего. Подробно — в статье что такое CDN.
Что даёт кэширование сайту
- Быстрый ответ сервера. Готовую страницу не нужно собирать — она отдаётся сразу. Это напрямую улучшает время до первого байта, с которого начинается загрузка.
- Запас на всплески. Реклама, рассылка или сезон приводят сразу много людей. Сервер, который отдаёт страницы из кэша, выдерживает кратно больше посетителей на том же тарифе.
- Экономия на хостинге. Часто включить кэш дешевле, чем переезжать на тариф выше. Если сервер тормозит, сначала проверяют именно это — порядок диагностики есть в статье о том, почему тормозит VPS.
- Лучше показатели скорости. Быстрый ответ сервера помогает уложиться в нормы Core Web Vitals, которые учитывают поисковые системы.
Кэш не единственный способ ускорения и не заменяет остальные: тяжёлые картинки и лишние скрипты он не вылечит. Полный список мер — в чек-листе как ускорить сайт.
Что нельзя кэшировать
Всё, что зависит от конкретного человека: корзина, личный кабинет, страница оформления заказа, результаты поиска с фильтрами, админка. Если закэшировать корзину, один покупатель увидит товары другого. Звучит как страшилка, но мы разбирали и такой случай: магазин на WordPress включил агрессивное кэширование «на всё» и неделю получал жалобы, что в корзине чужие товары.
Хороший плагин или настройка кэша исключают такие страницы автоматически. Плохая — кэширует всё подряд, и внешне сайт выглядит быстрым ровно до первого заказа.
Отдельная история — блоки, которые меняются часто: остатки на складе, цены по акции, счётчик товаров в корзине в шапке сайта. Саму страницу при этом кэшировать можно, а такие блоки подгружают отдельным запросом уже после её открытия. Это задача разработчика, но владельцу полезно знать, что «быстро» и «актуально» совмещаются.
Почему после правок на сайте ничего не меняется
Правильно настроенный кэш сбрасывается сам, когда вы сохраняете страницу или товар. Но бывают сценарии, когда он этого не делает:
- цену изменили через импорт из 1С, а не через админку, и сайт «не знает», что данные обновились;
- сменили картинку, не поменяв её имя, и браузер посетителя показывает старую;
- включён кэш на уровне хостера или CDN, о котором вы не знаете;
- поправили стили или скрипты, а у файла остался прежний адрес — браузеры держат старую версию до конца срока хранения.
Рабочее правило: если не видите свои изменения, откройте сайт в режиме инкогнито. Если там всё новое — виноват кэш вашего браузера. Если и там старое — кэш сервера, и его нужно сбросить в админке или панели хостинга. Для магазинов с обменом это особенно важно: как устроена выгрузка цен и остатков, мы разбирали в статье про интеграцию магазина с 1С.
Как очистить кэш сайта: идём по уровням
- Откройте страницу в режиме инкогнито или нажмите Ctrl+F5 — это обновление страницы в обход кэша браузера. Если изменения появились, дальше идти не нужно: у новых посетителей всё уже в порядке.
- Сбросьте кэш страниц в админке сайта: в плагине кэширования или в настройках системы управления есть кнопка вроде «Очистить кэш» или «Сбросить кэш».
- Загляните в панель хостинга. У части хостеров есть собственное кэширование на уровне веб-сервера, и сбрасывается оно отдельной кнопкой.
- Если подключён CDN — очистите кэш в его панели: целиком или для изменённых файлов.
- Если старая версия держится только у отдельных посетителей, дело в кэше их браузеров. Исправляется сменой версии файла, а не просьбой «обновить страницу».
Сбрасывать всё подряд «для профилактики» не стоит. После полной очистки первые посетители получают страницы, собранные с нуля, и на нагруженном сайте это заметный провал в скорости.
Как настроить кэширование: пошагово
- Начните с кэша страниц для гостей, не вошедших в аккаунт. Это 90% пользы при минимуме риска.
- Убедитесь, что корзина, кабинет и оформление заказа исключены.
- Настройте автоматический сброс при обновлении контента и после обмена с 1С.
- Для картинок и стилей включите долгий кэш браузера, а при обновлении файлов меняйте их версию в имени.
- Если на сайте большой каталог или сложные фильтры, добавьте кэш объектов — для этого на сервере должен быть Redis или Memcached. На виртуальном хостинге он доступен не на каждом тарифе.
- Проверьте сайт после включения как покупатель: положите товар в корзину, оформите тестовый заказ.
- Проверьте сайт как редактор: измените цену или текст и убедитесь, что посетитель без авторизации видит новую версию.
На какой срок кэшировать разное содержимое
| Что кэшируем | Разумный срок | Комментарий |
|---|---|---|
| Картинки, шрифты | От месяца до года | Меняются редко; при замене меняйте имя файла |
| Стили и скрипты с версией в имени | До года | Новая версия получает новый адрес, и старый кэш не мешает |
| Страницы статей и услуг | Часы или сутки со сбросом при сохранении | Содержимое одинаково для всех посетителей |
| Карточки товаров, каталог | Минуты или часы со сбросом при обновлении цен и остатков | Чем чаще меняются данные, тем короче срок |
| Корзина, кабинет, оформление заказа, админка | Не кэшировать | Содержимое своё у каждого человека |
Сроки — ориентир, а не норма: точные значения подбирают под то, как часто меняется содержимое именно вашего сайта.
Как проверить, что кэш работает
Включить кэширование и убедиться, что оно действует, — разные вещи. Проверка занимает несколько минут.
- Сравните время ответа. Откройте в браузере инструменты разработчика (клавиша F12), вкладку «Сеть», и обновите страницу дважды. Первая строка в списке — сама страница. При работающем кэше время ожидания ответа во второй раз заметно меньше.
- Посмотрите заголовки ответа. В свойствах запроса видны служебные заголовки.
Cache-Controlпоказывает, на какой срок файл разрешено хранить, а многие плагины и серверы добавляют отметку о попадании в кэш — заголовок вродеX-Cache. - Проверьте как гость. Авторизованным пользователям и администраторам кэш страниц обычно не отдаётся, поэтому проверять нужно в режиме инкогнито.
- Пройдите сценарий покупки с двух устройств. Корзины не должны пересекаться, а в шапке не должно появляться чужое имя.
Частые ошибки при настройке кэша
- Включают несколько плагинов кэширования сразу. Они мешают друг другу, и понять, какой из них держит старую версию, становится невозможно. Нужен один инструмент на каждый уровень.
- Кэшируют всё без исключений. Отсюда чужие корзины и формы, которые перестают отправляться.
- Забывают про сброс после импорта. Цены обновились в базе, а на сайте старые до конца срока жизни кэша.
- Ставят долгий кэш на файлы без версии. Обновили стили — и часть посетителей неделями видит сломанную вёрстку.
- Кэшируют страницы с рекламными метками как отдельные. Каждый переход с уникальной меткой в адресе собирает страницу заново, и в момент запуска рекламы кэш не помогает. Это настраивается: метки исключают из ключа кэша.
- Прикрывают кэшем медленный сайт. Если страница собирается пять секунд, первый посетитель после каждого сброса ждёт эти пять секунд. Кэш не отменяет оптимизацию кода и базы.
Чек-лист: кэш настроен правильно
- Кэш страниц включён для неавторизованных посетителей.
- Корзина, кабинет, оформление заказа и админка исключены из кэша.
- Кэш сбрасывается автоматически при сохранении страниц и товаров.
- Сброс срабатывает и после импорта или обмена с учётной системой.
- Статические файлы отдаются с долгим сроком хранения и версией в имени.
- Известно, на каких уровнях включён кэш и где он сбрасывается.
- После настройки пройдена тестовая покупка и проверка правок глазами гостя.
Коротко
Кэш хранит готовые страницы и файлы, чтобы не собирать их при каждом визите. Уровней несколько — браузер, сервер, база, CDN, — и старая версия может застрять на любом. Кэшируйте то, что одинаково для всех, исключайте персональные страницы, настройте автоматический сброс и после каждой настройки проверяйте сайт как покупатель.
Кэширование — самый дешёвый способ ускорить сайт, часто дешевле, чем переезд на тариф выше. Но настраивать его должен человек, который понимает, что именно на вашем сайте нельзя запоминать. Мы в CasperLab включаем кэш на каждом проекте, который сдаём, и проверяем его тестовой покупкой. Если ваш сайт тормозит, а разработчик разводит руками, — приносите, посмотрим, где узкое место, и при необходимости подберём хостинг с нужными возможностями.
Подобрать хостинг в CasperLab
Поможем подобрать решение под вашу задачу и рассчитаем стоимость без обязательств.
Подобрать хостинг