Я пытаюсь понять, как правильно обрабатывать кэш веб-браузера для одностраничных приложений.
У меня довольно типичный дизайн: несколько файлов HTML, JS и CSS, реализующих SPA, и куча данных JSON, которые используются SPA. Проблемы возникают, когда я хочу отправить обновление: я обновляю статическую часть сайта и код, который генерирует JSON одновременно, но клиентские браузеры часто кэшируют статическую часть, поэтому старый код пытается обработать новые данные и может (в зависимости от внесенных изменений) столкнуться с проблемами. (В частности, IE выглядит более агрессивно, чем Chrome или Firefox, в отношении использования кэшированного JS без повторной проверки.)
Какой лучший способ справиться с этим?
- Убедитесь, что мои изменения JSON обратно совместимы, и предположите, что срок действия кэшей браузера истечет в разумные сроки.
- Вставьте какой-то номер версии в статический JS и JSON, а затем выполните,
window.location.reload(true);
если они не совпадают. - Определите подходящую комбинацию заголовков (
must-revalidate
илиno-cache
что-то еще; источники различаются в зависимости от того, как это сделать), чтобы гарантировать, что браузеры всегда повторно проверяют все ресурсы при каждой загрузке, даже если это означает несколько дополнительных циклов для загрузки сайта. - Микро-управление моим контролем кэша и заголовками истекает, так что срок действия статического контента истекает, когда я хочу отправить обновление.
- Что-то другое?