Varnish: Różnice pomiędzy wersjami

m (wordpress varnish)
(Wstępna konfiguracja domeny)
Linia 5: Linia 5:
 
W warunkach testowych MyDevil ustaliło, że niektóre z popularnych CMSów (Joomla!) w standardowej konfiguracji bezproblemowo współpracują z Varnishem, inne (MediaWiki) wymagają kilku zmian w kodzie strony lub zainstalowanie dodatkowego pluginu (WordPress, przykładowy plugin to Varnish WordPress). Natomiast praktycznie każdy skrypt forum nie nadaje się do współpracy z Varnishem ze względu na sposób działania.
 
W warunkach testowych MyDevil ustaliło, że niektóre z popularnych CMSów (Joomla!) w standardowej konfiguracji bezproblemowo współpracują z Varnishem, inne (MediaWiki) wymagają kilku zmian w kodzie strony lub zainstalowanie dodatkowego pluginu (WordPress, przykładowy plugin to Varnish WordPress). 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 ===
+
=== Konfiguracja domeny ===
  
Aby dodać Varnish do naszej strony należy najpierw zadbać o odpowiednią konfigurację [[WWW|domeny]] oraz [[DNS]]. Trzeba ustawić domenę typu ''pointer'' na swoją stronę oraz należy ustawić ''wpis A'' cache'owanej domeny na odpowiedni serwer Varnisha.
+
Aby dodać Varnisha do istniejącej już strony ''domena'' należy:
 +
# Dodać [[Strona WWW|stronę WWW]] ''varnish.domena'' o takim samym typie co ''domena''.
 +
# Przenieść pliki ze strony ''domena'' do ''varnish.domena''.
 +
# Usunąć stronę WWW ''domena''.
 +
# Dodać stronę WWW ''domena'' typu [[Strona WWW#Pointer|pointer]] ze wskaźnikiem na ''varnish.domena''.
 +
# W [[DNS|strefie DNS]] ''domena'' ustawić rekord A na adres IP odpowiedniego serwera Varnisha zgodnie z tabelą poniżej.
 
   
 
   
 
{| class="wikitable"
 
{| class="wikitable"
Linia 20: Linia 25:
 
|}
 
|}
  
==== 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  ===
 
=== Warunki konieczne  ===
  

Wersja z 20:33, 19 maj 2015

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. 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 (Joomla!) w standardowej konfiguracji bezproblemowo współpracują z Varnishem, inne (MediaWiki) wymagają kilku zmian w kodzie strony lub zainstalowanie dodatkowego pluginu (WordPress, przykładowy plugin to Varnish WordPress). Natomiast praktycznie każdy skrypt forum nie nadaje się do współpracy z Varnishem ze względu na sposób działania.

Konfiguracja domeny

Aby dodać Varnisha do istniejącej już strony domena należy:

  1. Dodać stronę WWW varnish.domena o takim samym typie co domena.
  2. Przenieść pliki ze strony domena do varnish.domena.
  3. Usunąć stronę WWW domena.
  4. Dodać stronę WWW domena typu pointer ze wskaźnikiem na varnish.domena.
  5. W strefie DNS domena ustawić rekord A na adres IP odpowiedniego serwera Varnisha zgodnie z tabelą poniżej.
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

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.