TL; DR: Как реализовать кэширование, подобное Cache-Control: public,must-revalidate
, но как-то сказать браузеру повторную проверку только один раз каждые, скажем, 30 минут, вместо каждого отдельного запроса?
Длинная версия:
Я обслуживаю несколько файлов js и css и хочу, чтобы пользователи всегда обновляли локальный кэш, но с некоторой свободой.Браузеры должны иметь возможность кэшировать файл локально, но не нужно повторять проверку при каждом отдельном запросе.Например, после первого ответа 304
было бы нормально продолжать использовать уже локально кэшированный файл в течение еще 30 минут: браузеру не нужно было бы снова проверять свежесть после перехода пользователя на следующую страницу..
Я прочитал несколько статей о том, как реализовать кэширование, которое работает так, но безуспешно.
Я понимаю, что запрос 304
выполняется довольно быстро (я используюCDN между прочим), так как тело ответа пусто, но браузер все еще должен ждать несколько миллисекунд, и, если выполнено 4-5 таких запросов, браузеры уже начинают ставить в очередь эти revalidation
запросы.
Ближайшее, что я получил, было: Cache-Control: max-age=1800,public,must-revalidate
Браузер будет кэшировать ресурс в течение первых 30 минут, но после того, как он устареет, браузер начнет повторную проверку каждый раз.Есть ли способ обойти это?
Источники: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control https://support.cloudflare.com/hc/en-us/articles/115003206852-Origin-Cache-Control