В чем разница между кэшем браузера и cookies?

«В чем разница между кэшем браузера и cookies?» — вопрос из категории HTTP и веб-протоколы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

И кэш, и cookies хранятся на стороне клиента, но служат принципиально разным целям с точки зрения веб-разработки и тестирования.

Аспект Cookies Кэш браузера
Основное назначение Управление состоянием и сессией. Хранение пользовательских данных (идентификатор сессии, токены, предпочтения). Оптимизация производительности. Локальное хранение статических ресурсов (изображения, CSS, JS) для ускорения повторных загрузок.
Что хранится Небольшие текстовые данные (обычно до 4 КБ). Файлы (бинарные или текстовые) — скрипты, стили, изображения, шрифты.
Отправка на сервер Да. Автоматически отправляются с каждым HTTP-запросом к соответствующему домену (заголовки Cookie). Нет. Браузер проверяет локальную копию и может отправить условные заголовки (If-Modified-Since, ETag), но не сами файлы.
Управление Устанавливаются сервером (Set-Cookie header) или клиентским JS (document.cookie). Имеют параметры: expires, path, domain, Secure, HttpOnly. Управляется HTTP-заголовками ответа сервера: Cache-Control, Expires, ETag.
Влияние на тестирование Критичны для тестов авторизации, персональization, корзины покупок. Необходимо очищать или управлять ими в тестах. Может вызывать проблемы, когда тесты проверяют обновлённые ресурсы. Требует принудительного обновления (Ctrl+F5) или отключения в настройках тестового фреймворка.

Пример сценария для QA:

  • Cookies: При тестировании корзины интернет-магазина нужно убедиться, что добавленные товары не пропадают после обновления страницы (сохраняются в сессионной cookie) и после аутентификации (cookie сессии передаётся корректно).
  • Кэш: При развёртывании новой версии CSS нужно проверить, что пользователи видят актуальные стили, а не закэшированную старую версию. Это проверяется с помощью заголовков Cache-Control и механизма инвалидации кэша.