Асинхронный Web требует асинхронных подходов к кэшированию данных. Мой бывший коллега из Yahoo! Media Group Марк Ноттингхэм предлагает новую директиву Cache-Control – stale-while-revalidate. Сервер отгружает клиенту данные, предупреждая последнего, что пока грузит (возможно) устаревшие данные, которые впоследствии могут обновиться. Т.е. директива типа
Cache-Control: max-age=600, stale-while-revalidate=30
говорит, что отгруженный документ может быть устаревшим, но сервер просит еще 30 секунд на обновление этого документа, и если клиент после этих 30 секунд запросит документ еще раз, то получит либо новую копию, либо отказ. В случае последнего документ следует считать обновленным и кэшировать все надлежащие 600 секунд.