Словарь
Кеширование (Caching)
Кеширование – это практика хранения копий данных или вычисленных результатов во временном слое хранения, чтобы последующие запросы той же информации обслуживались быстрее без повторения исходного вычисления или сетевого запроса. В веб-разработке кеширование работает на нескольких уровнях: браузерный кеш хранит статические ресурсы локально на устройстве пользователя, CDN-кеш распределяет копии контента по edge-серверам по всему миру, серверные кеши вроде Redis или Memcached держат в памяти результаты запросов к базе данных и отрендеренные страницы, а кеш уровня приложения хранит вычисленные данные, чтобы избежать повторной обработки.
HTTP-кеширование управляется заголовками ответа, которые указывают браузерам и промежуточным кешам, как обращаться с сохранённым контентом. Основной механизм – заголовок Cache-Control с директивами: max-age задаёт, сколько секунд ответ остаётся действительным, no-cache требует повторной проверки у origin-сервера перед использованием, а no-store полностью запрещает кеширование для чувствительных данных. Заголовок ETag даёт отпечаток конкретной версии ресурса и позволяет делать эффективные условные запросы, когда браузер спрашивает сервер, актуальна ли его кешированная версия, вместо того чтобы скачивать ресурс заново. Правильно настроенные заголовки кеширования могут убрать большинство избыточных сетевых запросов, резко снижая и нагрузку на сервер, и время загрузки для возвращающихся посетителей.
Классическая проблема кеширования – инвалидация кеша, известная как одна из двух сложных проблем в информатике. Когда исходные данные меняются, кешированные копии нужно обновить или удалить, чтобы пользователи не видели устаревший контент. Стратегии зависят от уровня кеша: версионированные имена файлов с хешем содержимого гарантируют, что браузер скачает новый JavaScript и CSS при изменении кода, purge API у CDN позволяют программно очищать кеш при обновлении контента в CMS, а серверные кеши используют истечение по TTL или событийную инвалидацию, запускаемую записью в базу данных. Правильно выстроенное кеширование даёт огромный прирост производительности; неправильное приводит к тому, что пользователи видят устаревший контент, а разработчики часами выясняют, почему изменения не появляются.