Co to jest Cache? – Definicja
Cache (z ang. pamięć podręczna) przechowuje często wykorzystywane dane, aby dostęp do nich był możliwie jak najszybszy. Istnieje wiele modyfikacji oraz metod zastosowania pamięci podręcznej. Możemy rozróżnić m.in.:
- Server side cache – czyli zapis plików cache na serwerze, włączenie go ma na celu jak najszybszą odpowiedź strony i jej załadowanie jak najmniejszym kosztem zasobów serwera.
- Client side cache – lokalna pamięć podręczna przeglądarki (np. Chrome), która zapisuje raz pobrane przez użytkownika dane (np. pliki CSS, JS, grafiki i zdjęcia) w pamięci naszego komputera lub telefonu na czas określony przez nas w konfiguracji serwera. Dzięki temu strony nie muszą być ponownie całe pobrane z serwera przy kolejnych odwiedzinach.
Odwiedzając stronę internetową przeglądarka odpytuje serwer o adres url – zapytanie te jest przetwarzane przez serwer i w odpowiedzi dostaje kod HTML z którego elementów potem budowana jest strona w przeglądarce. Kod HTML zawiera odwołania do zewnętrznych plików grafik, CSS, JS czy fontów. Aby przyspieszyć załadowanie strony zarówno przeglądarka jak i serwery wykorzystują mechanizmy cache. Pozwala to na szybsze dostarczenie danego fragmentu kodu albo i całej strony do przeglądarki.
Cache po stronie przeglądarki pozwala nam na ominięcie ponownego pobrania zdjęcia czy pliku CSS w sytuacji gdy jego kopia znajduje się w pamięci podręcznej przeglądarki. Przy każdym zapytaniu o plik przeglądarka sprawdza czy nie ma go w swoich lokalnych zasobach. Analogicznie działa cache po stronie serwera – tu jednak oprócz plików cache’owane mogą być elementy dynamiczne które składają się na generowanie nowoczesnych stron WWW.
Dzięki wykorzystaniu zapisywania plików zarówno po stronie serwera, jak i po stronie użytkownika – możemy uzyskać zdecydowanie szybsze ładowanie stron internetowych. Popularne i często odwiedzane zasoby stron są cache’owane na serwerze i często w skompresowanej formie podawane są do przeglądarek. Kiedy wchodzimy na stronę po raz kolejny, te najcięższe skrypty i pliki załadowują się z pamięci podręcznej naszej przeglądarki i dzięki temu strona ładuje nam się 3-4x szybciej.
Mechanizmy Cache
Wybierając serwer powinniśmy zwrócić uwagę czy i jakie metody cache używa. W pracy z WordPress istotne jest maksymalne wykorzystanie możliwości jakie daje serwer i dzięki temu nasza strona będzie stanie ładować się szybko i pozwoli na jednoczesne odwiedziny przez wiele osób. Jest to istotne gdy nasz serwis ma kilkaset czy kilka tysięcy odwiedzin dziennie.
Zend OPcache
OPcache jest wbudowanym silnikiem cache służącym do przechowywania skompilowanego kodu skryptu w pamięci. Działa on na zasadzie buforowania skryptów PHP w celu uzyskania szybszej odpowiedzi i lepszego czasu ładowania się aplikacji.
Jeśli OPcache jest włączony, za każdym razem, gdy skrypt PHP uruchamiany jest po raz pierwszy, zostaje on zinterpretowany i skompilowany z kodu źródłowego (czytelnego dla człowieka) w kod maszynowy. Kod maszynowy to język instrukcji procesorów, nazywany często kodem operacji. Powyższy proces kompilacji jest wykonywany tylko raz podczas pierwszego wykonania, po którym zbuforowany kod zostaje zapisany w pamięci.
Na większości hostingów jest on dostępny od reki bez potrzeby konfiguracji. W przypadku WordPress potrafi on buforować 90-99 % głównych zapytań PHP.
Varnish Cache
Varhish jest to specyficzny tych cache zwany „reverse proxy”. Działa on jako „pośrednik” miedzy naszą przeglądarką a faktycznym serwerem HTTP. Użytkownik dociera do serwera Varnish tuż przed przekierowaniem żądania do głównego serwera www. Jeśli wersja podręczna żądania jest dostępna, wystarczy kilka milisekund, aby strona została z niej dostarczona do użytkownika. Czas odpowiedzi oczywiście zależy od sprzętu, ale ponieważ wczytanie przygotowanej odpowiedzi z pamięci operacyjnej jest o wiele szybsze niż przetwarzanie wszystkiego przez serwer www.
Cache tego typu sprawdza się w przypadku ecommerce ( Woocommerce, Prestashop czy nawet Magento 2.x)
mod_pagespeed
Opracowany przez Google natywny system cache pozwalający na akceleracje generowania stron już na poziomie serwera WWW – https://developers.google.com/speed/pagespeed/module
Nginx
Nginx to kolejny reverse proxy serwer działający jako pośrednik zapytań HTTP. Wykorzystywany masowo jako tzw load balancer – potrafi przyjąć i obsłużyć (kolejkować) duża ilość zapytań bez obciążania serwera. Jako load balancer używany jest na stronie głównej wordpress.com czy netflix.com
LSCache
System cache / akceleratora używany na serwerach LiteSpeed (zarówno w wersji enterprise jak i w okrojonej wersji na openlitepseed) – moduł ten łączy zarówno akceleracje stron jak i load balancing ale dostępny jest tylko dla serwera Litespeed.
Powyżej wymieniono tylko najpopularniejsze rozwiązania dostępne powszechnie. Oprócz nich mamy jeszcze Memcache, Memcached, APC, Xcache, Squid, Redis i wiele innych.
Cloudflare
Cloudflare to specjalna wersja webproxy – usługa pośrednicząca w ruchu miedzy naszym hostingiem a odwiedzającym. Poza funkcjami cache daje wiele przydatnych opcji jak ochrona przed atakami czy darmowy SSL w przypadku gdy twój hosting takowego nie oferuje.
WordPress a cache
Cache nie jest i nie powinien być stały. W przypadku zmian na stronie należy pamiętać by był automatyczny mechanizm czyszczący zapamiętaną wersje gdyż w innym przypadku zmiany będą niewidoczne dla odwiedzających. WordPress oferuje szeroki zestaw wtyczek kontrolujących serwerowy cache albo wręcz dodających jeszcze kolejną warstwę na poziomie aplikacji – czyli tworzenie statycznych plików przez sam WP. Optymalizując stronę www należy pamiętać o tym co oferuje nasz serwer, co może z tego wykorzystać nasza strona i nie przesadzić 🙂 Użycie kilku wtyczek na raz tworzących własne pliki cache czy nadmierna minifikacja / łączenie zasobów css/js tylko przeszkodzi nam w optymalnym wyświetleniu stron odwiedzającym.