Что такое кэш и как он влияет на работу сайта?
Что проверяют
Понимаете ли вы, что кэш бывает на нескольких уровнях, и знаете ли, как он мешает тестированию.
Как отвечать
Кэш это сохранённая копия данных ближе к потребителю, чтобы не считать и не запрашивать заново. Ускоряет ответ и снимает нагрузку, но всегда ценой возможной устаревшести.
Уровни, снизу вверх:
- база данных: кэш страниц и планов запросов;
- приложение: результаты вычислений и запросов в памяти или в Redis;
- CDN и обратный прокси: готовые ответы рядом с пользователем;
- браузер: файлы по заголовкам
Cache-Control,ETag,Last-Modified; - сервис-воркер: собственный кэш офлайн-режима.
Управляют этим заголовками: Cache-Control задаёт срок и правила, ETag позволяет вернуть 304 без тела, если ничего не изменилось. Статику обычно кэшируют навсегда, добавляя хеш в имя файла, а HTML не кэшируют, иначе люди застревают на старой версии.
Для тестировщика важно другое: кэш это источник плавающих дефектов. Проверили исправление, а видите старую версию. Отсюда практики: смотреть с отключённым кэшем в DevTools, проверять в приватном окне, различать, где кэшируется (браузер, CDN или приложение), и обязательно проверять инвалидацию, то есть что после изменения данных пользователь видит новое.
Где спотыкаются
Не различают кэш браузера и кэш на сервере, из-за чего заводят дефект не на ту команду.
Забывают проверить инвалидацию: вечно живущий кэш это дефект, даже если всё быстро.
Тестируют с включённым кэшем и получают невоспроизводимые результаты.
Не знают про ETag и код 304.