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