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

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

Ответ

Кэш браузера — это механизм оптимизации производительности, который хранит локальные копии статических ресурсов (изображения, CSS, JS). HTTP-куки (Cookies) — это механизм управления состоянием (state management), который хранит небольшие фрагменты данных, отправляемых сервером и возвращаемых обратно.

Сравнительная таблица:

Характеристика Кэш (Cache) Куки (Cookies)
Основная цель Ускорение загрузки страниц Отслеживание сессии и состояния
Что хранит Файлы (CSS, JS, изображения) Текстовые данные (ключ=значение)
Отправка на сервер Нет (условные запросы через If-Modified-Since) Да (автоматически в заголовке Cookie)
Управление HTTP-заголовки (Cache-Control, ETag) HTTP-заголовки (Set-Cookie) / JavaScript
Размер Крупный (мегабайты) Ограничен (~4KB на домен)
Срок хранения Зависит от политики кэширования Задается явно (Expires, Max-Age)

Примеры:

# Сервер указывает браузеру кэшировать файл на 1 час
HTTP/1.1 200 OK
Cache-Control: max-age=3600
Content-Type: text/css

/* Содержимое style.css */
# Сервер устанавливает куку сессии
HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123; Secure; HttpOnly; SameSite=Strict
// Клиентский JavaScript читает куки (не HttpOnly)
console.log(document.cookie); // Выводит все куки для текущего домена

Практический итог: Кэш делает сайт быстрее для пользователя, куки — «помнят» пользователя (логин, настройки, содержимое корзины).