Для відповіді із зображенням, що проходить через видимий для HTTP спільний кеш, опублікуйте явний строк і валідатор. Коли зображення безпечно використовувати повторно між користувачами, приклади заголовків відповіді такі:

Cache-Control: public, max-age=604800
ETag: "image-v4"

Строк у секундах; 604800 — це один тиждень. Використовуйте public лише для вмісту, призначеного для повторного використання між користувачами.

Якщо браузеру й спільному проксі потрібні різні строки, s-maxage задає строк спільного кешу. Наприклад, max-age=3600 разом із s-maxage=604800 дає спільному кешу довший період свіжості.

Expires — це дата, а не тривалість

Expires приймає позначку часу у форматі дати HTTP. max-age перекриває це поле, а для спільних кешів перевагу має s-maxage. Створюйте будь-яку дату Expires під час формування відповіді.

Перезавантаження може запросити валідацію

Запит, що містить Cache-Control: no-cache, вимагає успішної валідації на джерелі, перш ніж збережена відповідь буде використана повторно. Це може статися навіть тоді, коли звичайна політика свіжості відповіді інакше дозволяла б повторне використання.

Валідатор дає змогу кешу ефективно перевірити незмінене зображення. Відповідь 304 може підтвердити збережене подання, не передаючи байти зображення з джерела повторно. Тож трафік до джерела сам по собі не означає, що кешований об'єкт було відкинуто.

Порівнюйте звичайне повторне використання та явні перезавантаження, переглядаючи політику.

Схожі статті