Сегодня рассказываем про директиву stale-while-revalidate HTTP-заголовка Cache-Control.
Суть в том, что клиент может использовать уже «протухшую» версию файла из кэша, а в это время запросить новую версию в фоне. Вроде как и ответ на запрос можно получить мгновенно и обновление кэша тоже происходит, просто с задержкой.
Вот
пример от ребят из Google:
cache-control: private, max-age=900, stale-while-revalidate=3600
Такой заголовок они добавили для скрипта gpt.js, который используется для показа рекламы. Если файл запрашивается между 15 и 60 минутами, после того как он попал в кэш, будет использоваться устаревшая версия, но в фоне скрипт будет обновлён и закэширован для использования в будущем. Добавление заголовка ускорило начальную загрузку скрипта на 2% и на 0,5% увеличило доход с рекламы.
Директива stale-while-revalidate не входит в основной стандарт, однако уже поддерживается в FF, Chrome и Edge (в целом
67% юзеров по миру на момент публикации поста).
via
@tproger_web