Próbuję wymyślić, jak prawidłowo obsługiwać pamięć podręczną przeglądarki internetowej dla aplikacji jednostronicowych.
Mam dość typowy projekt: kilka plików HTML, JS i CSS implementujących SPA oraz garść danych JSON zużywanych przez SPA. Problemy pojawiają się, gdy chcę przekazać aktualizację: aktualizuję statyczną część witryny i kod, który generuje JSON w tym samym czasie, ale przeglądarki klienckie często mają buforowaną część statyczną, więc stary kod próbuje przetworzyć nowe dane i może (w zależności od dokonanych zmian) napotkać problemy. (W szczególności IE wydaje się bardziej agresywny niż Chrome lub Firefox w kwestii używania JS w pamięci podręcznej bez ponownego sprawdzania poprawności).
Jak najlepiej sobie z tym poradzić?
- Upewnij się, że moje zmiany JSON są zgodne wstecz i zakładam, że pamięci podręczne przeglądarki wygasną w rozsądnym czasie.
- Osadź jakiś numer wersji zarówno w statycznym JS, jak i JSON, a następnie uruchom,
window.location.reload(true);
jeśli się nie zgadzają. - Wymyśl odpowiednią kombinację nagłówków (
must-revalidate
lubno-cache
cokolwiek innego; źródła różnią się w jaki sposób to zrobić), aby zapewnić, że przeglądarki zawsze sprawdzają poprawność wszystkich zasobów przy każdym załadowaniu, nawet jeśli oznacza to kilka dodatkowych podróży w obie strony, aby załadować witrynę. - Mikro zarządzaj moją kontrolą pamięci podręcznej i wygasaj nagłówki, aby zawartość statyczna wygasała, gdy chcę przekazać aktualizację.
- Coś innego?