У меня возникли проблемы с формулировкой заголовков кеша HTTP для следующей ситуации.
Наш сервер имеет большие данные, которые меняются, возможно, пару раз в неделю. Я хочу, чтобы браузеры кэшировали эти данные. Кроме того, я хочу свести к минимуму задержку с помощью условного доступа, поскольку сеть ненадежна.
Конечное поведение, которое я выполняю, следующее:
- Клиент запрашивает ресурс, который ранее не видел.
- Сервер отвечает ресурсом вместе с ETag и
max-age
(24 часа). - До тех пор, пока не пройдет 24 часа, клиент будет использовать кешированный ресурс.
- После истечения срока действия клиент выполнит запрос проверки (
If-None-Match: [etag]
) - Если ресурс не изменился:
- сервер отвечает
304 Not Modified
- клиент как-то сообщил, что существующий ресурс имеет новую дату истечения срока действия через 24 часа
- вернуться к шагу 3
- сервер отвечает
Отвергнутый до своей сути... может ли ответ 304 содержать новый max-age
? Или оригинальный max-age
для выполнения последующих запросов?