Varnish: Różnice pomiędzy wersjami

(UWAGA! Usunięcie treści (strona pozostała pusta)!)
 
Linia 1: Linia 1:
''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 zainstalowania 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.
 
 
{| class="wikitable"
 
|-
 
! 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
 
|-
 
| s10.mydevil.net || 185.36.169.142 || cache10.mydevil.net
 
|-
 
| s11.mydevil.net || 91.185.184.174 || cache11.mydevil.net
 
|-
 
| s12.mydevil.net || 128.204.216.223 || cache12.mydevil.net
 
|-
 
| s13.mydevil.net || 128.204.217.109 || cache13.mydevil.net
 
|-
 
| s14.mydevil.net || 128.204.216.237 || cache14.mydevil.net
 
|-
 
| s15.mydevil.net || 128.204.218.146 || cache15.mydevil.net
 
|-
 
| s16.mydevil.net || 77.79.250.103 || cache16.mydevil.net
 
|-
 
| s17.mydevil.net || 85.194.246.222 || cache17.mydevil.net
 
|-
 
| s18.mydevil.net || 85.194.241.97 || cache18.mydevil.net
 
|-
 
| s19.mydevil.net || 91.185.184.230 || cache19.mydevil.net
 
|-
 
| s20.mydevil.net || 128.204.219.84 || cache20.mydevil.net
 
|-
 
| s21.mydevil.net || 77.79.250.64 || cache21.mydevil.net
 
|-
 
| s22.mydevil.net || 91.185.185.201 || cache22.mydevil.net
 
|-
 
| s23.mydevil.net || 185.36.170.234 || cache23.mydevil.net
 
|-
 
| s24.mydevil.net || 195.167.159.47 || cache24.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'owania 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.
 
 
==== 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.
 
 
[[Kategoria:Optymalizacja]]
 

Aktualna wersja na dzień 17:22, 1 maj 2018