Кеширование сервера
Определение: Кеширование сервера — это когда сервер (или прокси/CDN перед ним) сохраняет заранее подготовленный результат и отдаёт его повторно без “тяжёлой” обработки каждый раз. Проще говоря: вместо того чтобы заново собирать страницу и делать запросы к базе, сервер возвращает сохранённую копию — быстрее и дешевле по ресурсам.
Зачем это нужно
- Ускорить ответы сервера: страница формируется реже, а отдаётся быстрее.
- Снизить нагрузку на базу данных и backend-логику, особенно на посещаемых страницах.
- Повысить стабильность под нагрузкой (акции, распродажи, всплески трафика).
- Уменьшить время ожидания пользователя до первого отображения контента.
- Сделать сайт устойчивее: даже при “тормозящей” базе часть страниц может продолжать быстро открываться.
- Подготовить проект к масштабированию: кеш проще расширять, чем бесконечно наращивать сервер.
Пример
Пример кода:
# Пример логики кеширования ответа на сервере (упрощённо)
# Ключ кеша зависит от URL и, при необходимости, от языка/региона/авторизации
if cache.has(key):
return cache.get(key)
response = render_page()
cache.set(key, response, ttl=300)
return response
Например, каталог товаров можно кешировать на 5 минут (TTL=300), а корзину и личный кабинет не кешировать вообще или кешировать очень точечно, потому что там персональные данные. Важно продумать “инвалидацию” — когда кеш нужно сбрасывать (например, при изменении цены/остатка).
Скриншот
Подпись к скриншоту: Chrome DevTools → Network → Headers: показать заголовки ответа, где видно, что отдача идёт из серверного кеша (например, отметка HIT/MISS у прокси/CDN) и как настроен Cache-Control.
Частые ошибки
- Кешировать персонализированные страницы и случайно показывать контент одного пользователя другому.
- Не продумать инвалидирование: данные обновились, а пользователи видят старую версию из кеша.
- Делать слишком “общий” ключ кеша (не учитывать язык, город, валюту, авторизацию) и получать неверные версии страниц.
- Кешировать всё подряд одинаково: для разных страниц нужны разные TTL и правила.
- Путать серверное кеширование с кешированием браузера: первое снижает нагрузку на backend, второе ускоряет повторную загрузку у пользователя.
Связанные термины
- Кеширование браузера
- Cache-Control
- CDN
- Reverse proxy
- TTL
- Redis
- ETag
Наши услуги
- Доработка сайтов — внедряем серверное кеширование, настраиваем правила TTL и корректную инвалидизацию.
- Техническая поддержка сайта — следим за кешем после обновлений, устраняем “устаревание” и ошибки HIT/MISS.
- Создание корпоративных сайтов — проектируем архитектуру так, чтобы кеширование работало безопасно и давало прирост скорости.