Seria · 3 części · ~30 min czytania
Caching: od HTTP po warstwy, które piszesz sam
Caching warstwa po warstwie, jeden wątek: cache invalidation - co dany cache trzyma i kiedy to unieważnia. Od nagłówków HTTP po cache Service Workera.
- 01
HTTP caching: czemu druga wizyta na stronie jest natychmiastowa
Przeczytane NastępneWeź jeden plik
style.cssi prześledź jego dzień na działającej stronie: najpierw pobiera go przeglądarka, potem serwuje go z pamięci bez pytania serwera, później pyta serwer, czy jej kopia jest nadal aktualna, i zwykle dostaje samo potwierdzenie zamiast całego pliku, a po wdrożeniu nowej wersji pobiera go od nowa. Z tej jednej historii wychodzi cały HTTP caching -Cache-Control,ETag,304istale-while-revalidate.9 min czytania Czytaj → - 02
Service Worker - kod, który odpowiada zamiast serwera
Przeczytane NastępneWyłącz internet, odśwież stronę - a ona dalej działa. Stoi za tym Service Worker: osobny skrypt, który wchodzi między stronę a sieć i przechwytuje każde żądanie o plik, zanim trafi ono do serwera. To on decyduje, czy odpowiedzieć z sieci, z własnego cache (
Cache API), czy po swojemu - a z tej jednej decyzji biorą się wszystkie strategie cache'owania, tryb offline i klasyczna pułapka 'po wdrożeniu user widzi starą wersję'.12 min czytania Czytaj → - 03
Gdzie żyje cache: ile kopii jednej odpowiedzi istnieje naraz
Przeczytane NastępneTa sama odpowiedź serwera może w jednej chwili leżeć w kilku cache'ach naraz - pamięci aplikacji, Service Workerze, cache HTTP, na CDN - a całą stronę trzyma jeszcze bfcache. Każdy ma innego właściciela i co innego go czyści, więc „wyczyść cache" trafia w jeden z nich, czasem w żaden. Zostaje pytanie, od którego zaczyna się każde takie debugowanie: która warstwa trzyma starą kopię i co ją unieważnia.
9 min czytania Czytaj →