Cache: definicja i wszystkie obszary, w których stosuje się buforowanie

Informacja o linkach partnerskich v3.1
Informacja o linkach partnerskich v3.2 (wersja mobilna)

Obszary, w których stosuje się cache, od sprzętu po sieć WWW, zebrano w jednym drzewie według podziału Wikipedii, MDN i oficjalnej dokumentacji WordPressa. CPU, system operacyjny, baza danych i przeglądarka używają tej samej nazwy, więc to, co znika po wyczyszczeniu cache, zależy od warstwy.

Pamięć podręczna (cache) tymczasowo przechowuje często używane lub wkrótce potrzebne dane w magazynie szybszym niż oryginał, a gdy przychodzi to samo żądanie, odpowiada tą kopią zamiast oryginału.

Artykuł angielskiej Wikipedii Cache (computing) dzieli pamięci podręczne na sprzętowe, takie jak cache CPU i GPU, oraz programowe, takie jak cache dysku, WWW, DNS i bazy danych. Poniższe drzewo grupuje ten podział według miejsca, w którym znajduje się dany cache, a cache WWW opisano według podziału MDN na private cache i shared cache.

🗂️ Gdzie stosuje się cache
💻 Ⅰ. Urządzenia użytkownika
Cache systemu operacyjnegoCache dysku · cache DNS
Cache przeglądarkiPrivate cache w cache HTTP
Cache aplikacji mobilnychMiniatury · dane sesji
🖥️ Ⅱ. Serwer i aplikacja
Cache stronyGotowy HTML (WP Rocket · cache FastCGI)
OPcacheKod bajtowy PHP
Cache obiektówRedis · Memcached
Cache frameworków webowychLaravel · Django
🌐 Ⅲ. Dostarczanie treści · sieć
CDNShared cache w cache HTTP
Cache proxyPrzekazujące · odwrotne (Varnish)
Cache sieciowyCache ARP · cache resolwera DNS
🗄️ Ⅳ. Baza danych · pamięć masowa
Wewnętrzny cache DBPula buforów InnoDB · Shared Buffers
Cache pamięci masowejKontroler dysku · DRAM SSD
⚙️ Ⅴ. Sprzęt
Cache CPUL1 · L2 · L3 · TLB
Cache GPUTekstury · dane shaderów
☁️ Ⅵ. Chmura · wirtualizacja
Cache kontenerówWarstwy Dockera
Funkcje serverlessWarm Start
Cache buildówZależności CI/CD · artefakty

W symulatorze z artykułu Cache witryny & wewnętrzny cache serwera: jak działa pamięć podręczna WordPressa możesz sprawdzić, w jakiej kolejności cache przeglądarki, CDN i wewnętrzny cache serwera obsługują jedno żądanie WordPressa.

Ⅰ. Urządzenia użytkownika

  • ↳ Client-Side Cache

Cache na urządzeniach użytkownika, takich jak komputery osobiste i smartfony, można podzielić na cache systemu operacyjnego (OS), cache przeglądarki i cache aplikacji mobilnych.

Cache systemu operacyjnego (OS)Pamięć urządzenia (RAM)
Co zapisujeDane odczytane z dysku · domeny i adresy IP

Cache dysku (cache stron) zatrzymuje w pamięci dane odczytane z dysku i jest zarządzany przez jądro systemu operacyjnego. Cache DNS przechowuje ostatnio sprawdzane domeny i adresy IP.

Cache dyskuCache DNS
Cache przeglądarkiPamięć przeglądarki
Co zapisujeHTML · CSS · JS · obrazy · fonty

Gdy ten sam zasób jest żądany ponownie, żądanie nie trafia do serwera albo sprawdza tylko, czy zasób się zmienił. Dzięki Service Workerowi (Cache API) aplikacja webowa może otworzyć się z zapisanych zasobów nawet offline.

private cacheService Worker
Cache aplikacji mobilnychPamięć aplikacji
Co zapisujeMiniatury · część treści · stan logowania

Aplikacje obsługujące duże ilości treści zapisują na urządzeniu pobrane dane i ostatnio oglądane listy, aby nie pobierać tych samych danych ponownie.

YouTubeInstagram

Ⅱ. Cache serwera i aplikacji

  • ↳ Server-Side Cache

Cache po stronie serwera to cache włączony w proces budowania strony po dotarciu żądania do serwera. Oficjalna dokumentacja WordPressa dzieli go na wtyczki cache (cache stron), cache obiektów i cache serwera (cache opcode, taki jak OPcache).

Cache stronyDysk serwera · pamięć
Co zapisujeGotowa strona HTML

Przy żądaniu tej samej strony wysyła zapisaną kopię bez uruchamiania PHP. Są wtyczki cache i cache serwera WWW.

WP RocketCache FastCGI NginxLiteSpeed Cache
OPcachePamięć serwera
Co zapisujeSkompilowany kod bajtowy PHP

Gdy ten sam plik jest uruchamiany ponownie, kompilacja jest pomijana. Od PHP 5.5 jest wbudowany domyślnie.

Cache opcode
Cache obiektówPamięć serwera
Co zapisujeWyniki zapytań · dane sesji

Zapisuje często używane dane w magazynie w pamięci, aby nie powtarzać tego samego zapytania.

RedisMemcached
Cache frameworków webowychAplikacja
Co zapisujeSzablony · trasy · wyniki zapytań

Frameworki webowe zapisują wyrenderowane szablony i wyniki zapytań we własnym cache.

LaravelDjango

Ⅲ. Cache dostarczania treści / infrastruktury sieciowej

Cache w infrastrukturze sieciowej odpowiada kopią między odwiedzającym a serwerem źródłowym, co skraca fizyczną odległość i zmniejsza obciążenie serwera źródłowego. W standardzie cache HTTP odpowiada to shared cache, z którego korzysta wielu odwiedzających.

CDNSerwery brzegowe
Co zapisujePliki statyczne · strony

Dostarcza treść z serwera najbliższego odwiedzającemu spośród serwerów rozmieszczonych na całym świecie. Budowę i zalety opisano w artykule Czym jest CDN? Powody, by z niego korzystać, i 5 zalet poświęconym temu zagadnieniu.

CloudflareAkamaiFastlyQUIC.cloud
Cache proxySerwer proxy
Co zapisujeOdpowiedzi serwera

Proxy przekazujące zapisuje odpowiedzi po stronie klienta, jak w sieci firmowej, a odwrotne proxy przed serwerem.

Varnish CacheOdwrotne proxy Nginx
Cache sieciowyUrządzenia sieciowe · resolwery DNS
Co zapisujePowiązania adresów IP i MAC · wyniki zapytań DNS

Urządzenia sieciowe zapisują powiązania w cache ARP, a resolwery DNS operatorów i publiczne przechowują wyniki zapytań przez czas TTL rekordu.

Cache ARPCache resolwera DNS

Ⅳ. Cache baz danych i systemów pamięci masowej

Ponieważ operacje wejścia/wyjścia dysku są wolne, bazy danych i urządzenia pamięci masowej trzymają często odczytywane dane w pamięci.

Wewnętrzny cache bazy danychPamięć serwera DB
Co zapisujeCzęsto odczytywane dane · indeksy

Trzyma w pamięci często odczytywane dane i indeksy. Cache zapytań MySQL usunięto w wersji 8.0; MariaDB nadal go ma, ale domyślnie jest wyłączony.

Pula buforów InnoDBPostgreSQL Shared BuffersMongoDB WiredTiger
Cache pamięci masowejPamięć wewnątrz urządzenia pamięci masowej
Co zapisujeOstatnio odczytane · zapisane dane

Pamięć wbudowana w kontroler dysku twardego i DRAM wewnątrz SSD tymczasowo przechowują dane, zmniejszając opóźnienia wejścia/wyjścia.

Cache kontrolera dyskuSSD · NVMe DRAM

Ⅴ. Cache na poziomie sprzętu

Cache sprzętowy to szybka pamięć wewnątrz CPU i GPU, która przetwarza dane szybciej niż pamięć główna (RAM).

Cache CPUWewnątrz procesora
Co zapisujeInstrukcje · dane · wyniki translacji adresów

L1 jest osobny dla każdego rdzenia i dzieli się na cache instrukcji i cache danych, a L3 jest współdzielony przez wszystkie rdzenie. Jednostka zarządzania pamięcią (MMU) zapisuje w TLB wyniki tłumaczenia adresów wirtualnych na fizyczne.

L1L2L3TLB
Cache GPUWewnątrz procesora graficznego
Co zapisujeTekstury · instrukcje shaderów · wyniki pośrednie

Zwiększa wydajność przetwarzania GPU w grach, grafice 3D i obliczeniach uczenia maszynowego.

Ⅵ. Cache w środowiskach chmurowych / wirtualizacji

Środowiska chmurowe i wirtualizacji ponownie wykorzystują obrazy kontenerów, środowiska wykonawcze funkcji i artefakty buildów, skracając czas wdrażania i uruchamiania.

Cache kontenerówSerwery buildów · rejestry
Co zapisujeWarstwy obrazu

Obraz Dockera składa się z kilku warstw, a warstwy, które się nie zmieniły, nie są ponownie budowane ani pobierane.

Docker
Funkcje serverlessŚrodowisko wykonawcze w chmurze
Co zapisujeŚrodowisko wykonawcze

Utrzymuje przez pewien czas środowisko wykonawcze zakończonego wywołania i używa go ponownie przy następnym wywołaniu, skracając czas inicjalizacji (Cold Start) (Warm Start).

AWS LambdaGoogle Cloud Functions
Cache buildówMagazyn cache CI
Co zapisujeBiblioteki zależności · wyniki kompilacji

Skraca czas powtarzanych buildów.

GitHub ActionsGitLab CI

🔢 FAQ & polecane treści

Nie. Wyczyszczenie cache przeglądarki usuwa tylko kopie zapisane na urządzeniu odwiedzającego. Cache stron na serwerze i kopie w CDN czyści administrator witryny we wtyczce cache albo w panelu CDN.

Pierwsze żądanie tuż po wyczyszczeniu trafia aż do oryginału, więc odpowiedź przychodzi wolniej niż zwykle. Gdy to żądanie odtworzy kopię, kolejne wracają do normalnej szybkości, a [Wstępne ładowanie] w WP Rocket tworzy kopie z wyprzedzeniem po wyczyszczeniu.

W systemie Windows rozmiary cache L1, L2 i L3 są widoczne u dołu ekranu procesora na karcie [Wydajność] w Menedżerze zadań. W Linuksie te same wartości sprawdzisz w wyniku polecenia [lscpu].

💾 Powiązane wpisy: cache 10 wpisów
🗂️ Cache
📋 Cache: definicja i zastosowania 📄 Cache witryny & wewnętrzny cache serwera
📋 Konfiguracja WP Rocket 📝 Zend OPcache 📝 Instalacja Redis Cache
📝 Czym jest CDN? 📝 Varnish Cache
📋 Test szybkości WP Rocket 📝 Przykład przyspieszenia 📝 Wtyczki cache · optymalizacji

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 10   +   5   =