Varnish: Różnice pomiędzy wersjami
Linia 1: | Linia 1: | ||
{{Stub}} | {{Stub}} | ||
− | ''Varnish'' to akcelerator stron www. Wygenerowany przez backend (np. PHP) kod html zapisuje w pamięci. Zamiast za każdym razem przekazywać żądanie do backendu korzysta z przygotowanej wcześniej kopii. Pozwala to zmniejszyć obciążenie generowane przez stronę (zużycie interpretatorów), a co za tym idzie zwiększyć możliwą liczbę jej wywołań. Na serwerach ''MyDevil'' varnish cachuje tylko treści dynamiczne | + | ''Varnish'' to akcelerator stron www. Wygenerowany przez backend (np. PHP) kod html zapisuje w pamięci. Zamiast za każdym razem przekazywać żądanie do backendu korzysta z przygotowanej wcześniej kopii. Pozwala to zmniejszyć obciążenie generowane przez stronę (zużycie interpretatorów), a co za tym idzie zwiększyć możliwą liczbę jej wywołań. Na serwerach ''MyDevil'' varnish cachuje tylko treści dynamiczne. Części statyczne stron mają niezależny od Varnisha system cache. |
− | === | + | === === |
− | + | Nie wszystkie strony współpracują z Varnishem. Strony, które dla każdego użytkownika generują inną zawartość (np. gry przeglądarkowe, zamknięte fora) nie nadają się do cache'owania Varnishem. Z kolei strony, których zawartość nie zmienia się bardzo często i w większości te, które nie używają logowania (a co za tym idzie - ciasteczek) dobrze z nim współpracują (np. blogi, strony domowe, firmowe), jednak zależy to też od działania i budowy takiej strony. | |
− | |||
− | |||
− | do | + | W warunkach testowych MyDevil ustaliło, że niektóre z popularnych CMSów (WordPress, Joomla!) w standardowej konfiguracji bezproblemowo współpracują z Varnishem, inne (MediaWiki) wymagają kilku zmian w kodzie strony. Natomiast praktycznie każdy skrypt forum nie nadaje się do współpracy z Varnishem ze względu na sposób działania. |
− | |||
− | === | + | === Wstępna konfiguracja domeny === |
− | + | Aby dodać Varnish do naszej strony należy najpierw zadbać o odpowiednią konfigurację domeny oraz [[DNS]]. Trzeba ustawić domenę typu pointer na swoją stronę oraz należy ustawić wpis A cache'owanej domeny na odpowiedni serwer Varnisha. | |
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! serwer mydevil !! adres IP Varnisha !! nazwa domenowa Varnisha | ||
+ | |- | ||
+ | | s3.mydevil.net || 185.36.169.156 || cache3.mydevil.net | ||
+ | |- | ||
+ | | s4.mydevil.net || 213.189.55.195 || cache4.mydevil.net | ||
+ | |- | ||
+ | | s5.mydevil.net || 31.186.82.252 || cache5.mydevil.net | ||
+ | |} | ||
+ | ==== Przykład ==== | ||
− | + | Strona WWW znajduje się w domenie adam.usermd.net i znajduje się na serwerze s4.mydevil.net. Aby dostać się na tę stronę przez domenę adam.pl należy w ustawieniach DNS domeny adam.pl dodać rekord A z zawartością 213.189.55.195. Następnie należy dodać nową stronę WWW z domeną adam.pl, typem pointer i wskaźnikiem na adam.usermd.net. | |
+ | |||
+ | === Warunki konieczne === | ||
− | Aby | + | Aby strona została załadowana z pamięci: |
− | + | * nie może ustawiać cookies | |
− | + | * odpowiedź nie może zawierać nagłówka zabraniającego cache'owaia, np. Cache-control: no-cache, Pragma: nocache czy też Expires: z datą dawniejszą niż aktualna. | |
− | |||
− | |||
− | |||
− | |||
+ | === Kontrola zachowania cache === | ||
− | + | Domyślny czas przechowywania strony w cache'u to 2 minuty. Aby zmienić okres cache'owana strony należy użyć na stronie nagłówka <code>Cache-control</code>. Na przykład nagłówek <code>Cache-Control: public, max-age=600</code> skutkuje zmianą czasu na 600 sekund. | |
− | |||
− | |||
− | + | === Diagnostyka === | |
− | |||
− | |||
− | + | Aby sprawdzić czy strona jest cache'owana oraz poznać ewentualny powód jej 'odrzucenia' można posłużyć się poleceniem<code>curl -sI <nowiki>http://cache.example.com/</nowiki> |egrep "X-Cache|Cache-Control|Age|Expires"</code> | |
− | + | Takie polecenie pozwoli obejrzeć jakie nagłówki zostały odebrane. Nagłówek X-Cacheable jest dodawany przez Varnisha i pozwala określić czy strona może być zapisana w pamięci podręcznej, czy też nie oraz dlaczego. | |
− | Age | ||
− | X- | ||
− | |||
− | + | ==== Przykłady ==== | |
− | |||
− | |||
− | |||
− | |||
− | + | {{prompt}}curl -sI <nowiki>http://cache.example.com/</nowiki> |egrep "X-Cache|Cache-Control|Age|Expires" | |
+ | {{output}}Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 | ||
+ | X-Cacheable: NO:Cache-control=no-cache{{endoutput}} | ||
+ | Strona jest przekazywana dalej z powodu nagłówka Cache-Control zabraniającego cachowania. | ||
− | + | {{prompt}}curl -sI <nowiki>http://cache.example.com/</nowiki> |egrep "X-Cache|Cache-Control|Age|Expires" | |
+ | {{output}}Cache-Control: public, max-age=600 | ||
+ | X-Cacheable: YES | ||
+ | Age: 0 | ||
+ | X-Cache: MISS{{endoutput}} | ||
+ | Strona została dodana do cache, jednak to konkretne żądanie zostało przekazane dalej (ponieważ w pamięci nie było jeszcze odpowiednio świeżej wersji). Wykonując takie samo polecenie chwilę później, widać wynik podobny do poniższego: | ||
− | + | {{prompt}}curl -sI <nowiki>http://cache.example.com/</nowiki> |egrep "X-Cache|Cache-Control|Age|Expires" | |
+ | {{output}}Cache-Control: public, max-age=600 | ||
+ | X-Cacheable: YES | ||
+ | Age: 25 | ||
+ | X-Cache: HIT{{endoutput}} | ||
+ | Nagłówek X-Cache: Hit oznacza, że Varnish wysłał kopię z pamięci podręcznej, która została utworzona 25 sekund temu (nagłówek Age), co oznacza, że jeszcze przez 575 sekund (max-age=600 - Age) interpretatory PHP będą wolne od konieczności przetwarzania takiego żądania. | ||
− | + | [[Category:WWW]] |
Wersja z 13:47, 25 lut 2015
Szablon:Stub Varnish to akcelerator stron www. Wygenerowany przez backend (np. PHP) kod html zapisuje w pamięci. Zamiast za każdym razem przekazywać żądanie do backendu korzysta z przygotowanej wcześniej kopii. Pozwala to zmniejszyć obciążenie generowane przez stronę (zużycie interpretatorów), a co za tym idzie zwiększyć możliwą liczbę jej wywołań. Na serwerach MyDevil varnish cachuje tylko treści dynamiczne. Części statyczne stron mają niezależny od Varnisha system cache.
Spis treści
Nie wszystkie strony współpracują z Varnishem. Strony, które dla każdego użytkownika generują inną zawartość (np. gry przeglądarkowe, zamknięte fora) nie nadają się do cache'owania Varnishem. Z kolei strony, których zawartość nie zmienia się bardzo często i w większości te, które nie używają logowania (a co za tym idzie - ciasteczek) dobrze z nim współpracują (np. blogi, strony domowe, firmowe), jednak zależy to też od działania i budowy takiej strony.
W warunkach testowych MyDevil ustaliło, że niektóre z popularnych CMSów (WordPress, Joomla!) w standardowej konfiguracji bezproblemowo współpracują z Varnishem, inne (MediaWiki) wymagają kilku zmian w kodzie strony. Natomiast praktycznie każdy skrypt forum nie nadaje się do współpracy z Varnishem ze względu na sposób działania.
Wstępna konfiguracja domeny
Aby dodać Varnish do naszej strony należy najpierw zadbać o odpowiednią konfigurację domeny oraz DNS. Trzeba ustawić domenę typu pointer na swoją stronę oraz należy ustawić wpis A cache'owanej domeny na odpowiedni serwer Varnisha.
serwer mydevil | adres IP Varnisha | nazwa domenowa Varnisha |
---|---|---|
s3.mydevil.net | 185.36.169.156 | cache3.mydevil.net |
s4.mydevil.net | 213.189.55.195 | cache4.mydevil.net |
s5.mydevil.net | 31.186.82.252 | cache5.mydevil.net |
Przykład
Strona WWW znajduje się w domenie adam.usermd.net i znajduje się na serwerze s4.mydevil.net. Aby dostać się na tę stronę przez domenę adam.pl należy w ustawieniach DNS domeny adam.pl dodać rekord A z zawartością 213.189.55.195. Następnie należy dodać nową stronę WWW z domeną adam.pl, typem pointer i wskaźnikiem na adam.usermd.net.
Warunki konieczne
Aby strona została załadowana z pamięci:
- nie może ustawiać cookies
- odpowiedź nie może zawierać nagłówka zabraniającego cache'owaia, np. Cache-control: no-cache, Pragma: nocache czy też Expires: z datą dawniejszą niż aktualna.
Kontrola zachowania cache
Domyślny czas przechowywania strony w cache'u to 2 minuty. Aby zmienić okres cache'owana strony należy użyć na stronie nagłówka Cache-control
. Na przykład nagłówek Cache-Control: public, max-age=600
skutkuje zmianą czasu na 600 sekund.
Diagnostyka
Aby sprawdzić czy strona jest cache'owana oraz poznać ewentualny powód jej 'odrzucenia' można posłużyć się poleceniemcurl -sI http://cache.example.com/ |egrep "X-Cache|Cache-Control|Age|Expires"
Takie polecenie pozwoli obejrzeć jakie nagłówki zostały odebrane. Nagłówek X-Cacheable jest dodawany przez Varnisha i pozwala określić czy strona może być zapisana w pamięci podręcznej, czy też nie oraz dlaczego.
Przykłady
$ curl -sI http://cache.example.com/ |egrep "X-Cache|Cache-Control|Age|Expires" Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 X-Cacheable: NO:Cache-control=no-cache
Strona jest przekazywana dalej z powodu nagłówka Cache-Control zabraniającego cachowania.
$ curl -sI http://cache.example.com/ |egrep "X-Cache|Cache-Control|Age|Expires" Cache-Control: public, max-age=600 X-Cacheable: YES Age: 0 X-Cache: MISS
Strona została dodana do cache, jednak to konkretne żądanie zostało przekazane dalej (ponieważ w pamięci nie było jeszcze odpowiednio świeżej wersji). Wykonując takie samo polecenie chwilę później, widać wynik podobny do poniższego:
$ curl -sI http://cache.example.com/ |egrep "X-Cache|Cache-Control|Age|Expires" Cache-Control: public, max-age=600 X-Cacheable: YES Age: 25 X-Cache: HIT
Nagłówek X-Cache: Hit oznacza, że Varnish wysłał kopię z pamięci podręcznej, która została utworzona 25 sekund temu (nagłówek Age), co oznacza, że jeszcze przez 575 sekund (max-age=600 - Age) interpretatory PHP będą wolne od konieczności przetwarzania takiego żądania.