Varnish: Różnice pomiędzy wersjami

Linia 7: Linia 7:
 
=== Konfiguracja domeny ===
 
=== Konfiguracja domeny ===
  
Aby dodać Varnisha do istniejącej już strony ''domena'' należy:
+
Aby dodać Varnisha do istniejącej już strony ''domena'' należy zmienić adres IP w strefie DNS danej 'domeny' na IP Varnisha.
# 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 41: Linia 36:
 
==== Przykład ====
 
==== Przykład ====
  
Na przykład na serwerze s4.mydevil.net użytkownik jan hostuje stronę swojej firmy na domenie ''firmajana.pl''. Strona jest napisana w php spełnia wszystkie wymagania, aby mogła korzystać z Varnisha. W panelu utworzono nową stronę WWW typu php o domenie ''varnish.firmajana.pl''. Przeniesiono pliki z katalogu <code class="directory">/usr/home/jan/domains/firmajana.pl</code> do katalogu <code class="directory">/usr/home/jan/domains/varnish.firmajana.pl</code>. Następnie w panelu usunięto stronę WWW ''firmajana.pl''. Następnie dodano nową stroną WWW, gdzie:
+
Jeżeli mamy witrynę 'domena' i chcielibyśmy przetestować jej działanie z Varnishem można dodać stronę www typu pointer 'varnish.domena' wskazującą na 'domena' i następnie w strefie dns dodać wpis A kierujący 'varnish.domena' na adres IP Varnish. Testowa strona będzie dostępna pod adresem 'varnish.domena'.
* "Nazwa domeny" to ''firmajana.pl'';
 
* "Typ" to Pointer;
 
* "Wskaźnik na" to ''varnish.firmajana.pl''.
 
Później w strefie DNS edytowano domenę ''firmajana.pl''. Usunięto obecny wpis typu A i dodano nowy, gdzie:
 
* "Wpis" to firmajana.pl;
 
* "Typ" to A;
 
* "Zawartość" to 213.189.55.195;
 
* "TTL" to 3600.
 
  
 
=== Warunki konieczne  ===
 
=== Warunki konieczne  ===

Wersja z 23:30, 10 maj 2016

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 zmienić adres IP w strefie DNS danej 'domeny' na IP Varnisha.

serwer mydevil adres IP Varnisha nazwa domenowa Varnisha
s0.mydevil.net 212.91.26.155 cache0.mydevil.net
s1.mydevil.net 212.91.26.152 cache1.mydevil.net
s2.mydevil.net 212.91.26.159 cache2.mydevil.net
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
s6.mydevil.net 85.194.241.80 cache6.mydevil.net
s7.mydevil.net 91.185.185.212 cache7.mydevil.net
s8.mydevil.net 85.194.246.96 cache8.mydevil.net
s9.mydevil.net 85.194.241.159 cache9.mydevil.net

Przykład

Jeżeli mamy witrynę 'domena' i chcielibyśmy przetestować jej działanie z Varnishem można dodać stronę www typu pointer 'varnish.domena' wskazującą na 'domena' i następnie w strefie dns dodać wpis A kierujący 'varnish.domena' na adres IP Varnish. Testowa strona będzie dostępna pod adresem 'varnish.domena'.

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.