|
|
(Nie pokazano 28 wersji utworzonych przez 4 użytkowników) |
Linia 1: |
Linia 1: |
− | {{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ą własny, działający zawsze system cache, niezależny od varnisha.
| |
| | | |
− | === 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.
| |
− |
| |
− | do zrobienia poniżej:
| |
− | <!---
| |
− |
| |
− | === Kontrola zachowania cache ===
| |
− |
| |
− | Okres, na jaki strona ma być cache'owana można ustawić, używając na stronie nagłówka Cache-control. Na przykład: jeżeli chcemy aby nasza strona lub jej konkretna podstrona były przechowywane przez okres 10 minut można wysyłać nagłówek: Cache-Control: public, max-age=600. Jeżeli w ogóle nie użyjemy na stronie tego nagłówka, a będzie ona spełniać warunki, czas jej przechowywania w cache to 120 sekund (2 min).
| |
− |
| |
− |
| |
− | Używanie varnisha i diagnostyka¶
| |
− |
| |
− | Aby dana domena korzystała z naszego varnisha, musi ona wskazywać na odpowiedni adres IP w zależności od przyznanego zestawu serwerów:
| |
− |
| |
− | dla web0: 212.91.26.155 (nazwa DNS: cache0.mydevil.net),
| |
− | dla web1: 212.91.26.152 (nazwa DNS: cache1.mydevil.net),
| |
− | dla web2: 212.91.26.159 (nazwa DNS: cache2.mydevil.net),
| |
− | dla s3: 185.36.169.156 (nazwa DNS: cache3.mydevil.net).
| |
− | W przypadku innych adresów strona w ogóle nie przechodzi przez akcelerator. Jeżeli mamy witrynę example.com i chcielibyśmy przetestować jej działanie z varnishem, można nakierować np. subdomenę cache.example.com na adres serwera cache'ującego oraz dodać stronę typu pointer wskazującą na example.com Więcej informacji: o tworzeniu domeny, o stronie typu pointer. Przypominamy, że można tę operację wykonać zarówno z panelu DevilWEB2, jak i z konsoli, za pomocą Devil2. Polecenie w konsoli: devil www add cache.example.com pointer example.com
| |
− |
| |
− |
| |
− | Po rozpropagowaniu DNS możemy testować jak zachowuje się nasza strona. Aby sprawdzić czy w ogóle strona jest cache'owana oraz poznać ewentualny powód jej 'odrzucenia' można posłużyć się narzędziem curl:
| |
− |
| |
− | curl -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ładowo, otrzymując w odpowiedzi:
| |
− |
| |
− | Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0
| |
− | X-Cacheable: NO:Cache-control=no-cache
| |
− | Widzimy, że strona jest przekazywana dalej, z powodu nagłówka Cache-Control zabraniającego cachowania. Z kolei przykładowa odpowiedź:
| |
− |
| |
− | Cache-Control: public, max-age=600
| |
− | X-Cacheable: YES
| |
− | Age: 0
| |
− | X-Cache: MISS
| |
− | Będzie oznaczała, że 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, powinniśmy zobaczyć wynik podobny do poniższego:
| |
− |
| |
− | Cache-Control: public, max-age=600
| |
− | X-Cacheable: YES
| |
− | Age: 25
| |
− | X-Cache: HIT
| |
− | Nagłówek X-Cache: Hit oznacza, że varnish wysłał nam 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) nasze interpretatory PHP będą wolne od konieczności przetwarzania takiego żądania.
| |
− |
| |
− | Czego można używać z varnishem?¶
| |
− |
| |
− | Ponieważ strona musi spełniać pewne warunki, nie wszystkie nadają się do użycia 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, i nie ma sensu go dla nich używać. Z kolei takie strony jak blogi, strony domowe, firmowe - słowem, nie zmieniające się bardzo często i w większości nie używające logowania (a co za tym idzie - ciasteczek) mogą zostać przyspieszone tymże narzędziem, jednak zależy to też od działania i budowy takiej strony.
| |
− |
| |
− | W warunkach testowych udało nam się ustalić, ż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, a jeszcze inne (praktycznie każdy skrypt forum) nie nadają się do współpracy z Varnishem ze względu na ich sposób działania.
| |
− |
| |
− | -->
| |