Wpis z mikrobloga

Wdrażamy nową wersję aplikacji Angular. Klient nadal widzi starą wersję, bo przeglądarka zapisała w pamięci podręcznej. Jak sobie z tym radzić? Angular tworzy pliki .js z losowym ciągiem znaków, ale to index.html jest cachowany.

Po analizie wyszło, że serwer lighttpd zwraca datę Last-Modified 1970.

Można wymusić Cache-Control: no-cache, no-store, must-revalidate

Ale czy to dobry pomysł?

#programowanie #programista15k #angular #frontend
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@SendMeAnAngel: Najlepszym rozwiązaniem jest wyłączenie cache dla index.html, a pozostawienie długiego cache dla haszowanych plików. To jest powszechnie stosowany sposób. Wymusza pobranie najnowszej wersji aplikacji, a pozostałe pliki mogą być cache’owane, bo mają unikalne nazwy po każdym buildzie Angulara.

@sokytsinolop To, co mówisz, ma sens przy CDN-ach, gdzie często robi się cache invalidation, ale nie rozwiązuje głównego problemu. W Angularze hashowane pliki nie wymagają czyszczenia cache, bo kluczowe jest
  • Odpowiedz
Jak masz front za cloudflare albo na awsie na cloudfroncie to szukaj "cache invalidation"


@sokytsinolop: Nie mamy CDN i klient nie zapłaci.

Najlepszym rozwiązaniem jest wyłączenie cache dla index.html, a pozostawienie długiego cache dla haszowanych plików. To jest powszechnie stosowany
  • Odpowiedz
  • 0
@SendMeAnAngel: ale po co kombinujesz z jakimiś workerami - index.html musi mieć no-cache a wszystko inne bardzo długi cache jak opisał @ra_s - absolutnie nie ma lepszego rozwiązania i dodatkowo to jest bardzo proste
  • Odpowiedz