|
|
(Nie pokazano 20 wersji utworzonych przez 4 użytkowników) |
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 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:
| |
− | # 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"
| |
− | |-
| |
− | ! 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 ====
| |
− |
| |
− | 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:
| |
− | * "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 ===
| |
− |
| |
− | 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.
| |
− |
| |
− | ==== 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]]
| |