Skip to content

WCFV

Analytics Blog

Menu
Menu

Skonfiguruj Varnish Cache i przyspiesz Czas ładowania aplikacji 10x szybciej

Posted on 2 marca, 2022 by admin
varnish cache

niezależnie od rozmiaru i złożoności aplikacji, użytkownicy będą woleli pozostać lub wracać, jeśli będą cieszyć się szybkością, z jaką dynamiczna zawartość z aplikacji jest renderowana. Poprawiona wydajność, szybkie dostarczanie stron i szybka reakcja serwera to również niektóre z niewielu czynników, które utrzymują użytkowników w kontakcie z Twoją aplikacją.

te i wiele innych są czynnikami wpływającymi na każdą udaną i popularną aplikację internetową. Chociaż istnieje kilka technik i strategii, które pomagają przyspieszyć nowoczesne aplikacje internetowe, wykonywanie buforowania okazało się znacznie bardziej wartościowe.

każde zapytanie do konkretnej strony w Twojej witrynie bezpośrednio komunikuje się i otrzymuje odpowiedzi z twojego serwera. Tak więc za każdym razem, gdy użytkownik odwiedza określoną stronę, Twój front-end wykonuje połączenie HTTP w celu pobrania odpowiedniej zawartości, a twój serwer jest zobowiązany do odpowiedniej odpowiedzi.

w przypadku aplikacji sieci Web o małej skali może to nie być zbyt wiele, ale gdy aplikacja zacznie się skalować, ogromna liczba żądań do serwera sieci Web stopniowo stanie się zbyt duża do obsługi. Jest to często uważane za niepotrzebne przeciążenie.

serwowanie strony www zajmuje dużo zasobów – zwłaszcza gdy jest generowana dynamicznie jak te tworzone za pomocą PHP. Dlatego w tym samouczku Varnish cache pokażę Ci, jak zwiększyć szybkość aplikacji PHP bez konieczności skalowania w pionie lub poziomie, ale za pomocą lakieru.

co to jest Varnish Cache i dlaczego go używać

Varnish cache to akcelerator aplikacji internetowych znany również jako buforowanie http reverse proxy. Działa bardziej jak pośrednik między twoim klientem (tj. użytkownikiem) a twoim serwerem WWW. Oznacza to, że zamiast Twojego serwera internetowego, aby cały czas bezpośrednio słuchać żądań określonych treści, Varnish weźmie na siebie odpowiedzialność.

gdy żądanie pojawi się po raz pierwszy, Varnish w PHP skieruje je do serwera www w celu uzyskania odpowiedniej odpowiedzi. Ta odpowiedź zostanie buforowana przez Varnish w PHP przed wysłaniem do klienta. Co ciekawe, każde kolejne żądanie takiej treści będzie po prostu wysyłane bezpośrednio z pamięci podręcznej Varnish, a nie bezpośrednio na serwer WWW. Dzięki temu Twoja aplikacja internetowa będzie w stanie zarządzać ogromną liczbą jednoczesnych żądań od kilku użytkowników, ponieważ serwer nie zostanie nawet uruchomiony. Spowoduje to magiczny wzrost wydajności aplikacji.

PHP Varnish używa Varnish Configuration Language (VCL), aby umożliwić modyfikowanie jego zachowania poprzez dodanie logiki do manipulowania żądaniami. Możesz manipulować odpowiedziami wracającymi z serwera www, usuwać pliki cookie lub dodawać nagłówki do odpowiedzi.

Varnish workflow

Get /some-web-page (client) —→ Cache –→ Get /some-web-page (Server) –→ Cache –→ Back to client.

varnish Cache workflow

varnish Cache workflow

Załóżmy, że pierwsze żądanie strony zajmuje około 200ms.

teraz, po całkowitym buforowaniu zawartości takiej strony, przepływ zmienia się całkowicie i żądanie od klienta na tę samą stronę nie uderzy bezpośrednio na serwer, ponieważ Varnish już go buforował wcześniej. Spójrz na ilustrację poniżej:

GET / some-web-page (client ) -→ Cache (HIT). — > i z powrotem do klienta

kolejne zapytanie do strony 10ms…..

zajebiste prawda?

dlatego chodzi o to, aby zmniejszyć liczbę żądań wysyłanych do serwera zaplecza w jak największym stopniu. To w zamian zwiększy szybkość renderowania strony dla Twojej aplikacji internetowej.

pierwsze kroki z konfiguracją lakieru

teraz, gdy przystąpiłeś do podstawowego wprowadzenia lakieru i jego możliwości buforowania, nadszedł czas, aby skonfigurować lakier i użyć go do aplikacji PHP. Rozpoczęcie pracy z lakierem jest łatwe. Aby poprawnie skonfigurować, użyjemy i pobierzemy istniejącą aplikację z GitHub i wdrożymy ją na serwerze DigitalOcean. Następnie skonfigurujemy lakier.

następnie załóż bezpłatne konto na DigitalOcean, a po jego zakończeniu kliknij przycisk „Utwórz”, a z rozwijanej listy wybierz „krople”, aby utworzyć nową kroplę.

przewiń w dół, aby wybrać Ubuntu 16.04 i zauważ, że powinieneś wybrać rozmiar kropli, najmniejszy rozmiar powinien wystarczyć dla tego samouczka Varnish cache.

przewiń w dół, aby dodać klucz SSH, jeśli go posiadasz. Pomoże Ci to w łatwym zalogowaniu się na serwer później, w przeciwnym razie będziesz musiał sprawdzić skrzynkę odbiorczą pod kątem domyślnego hasła do kropli. Następnie dodaj nazwę hosta. Nazwałem swój lakier-demo. Teraz kliknij Utwórz, aby rozpocząć tworzenie kropli.

po zakończeniu procesu zobaczysz nową kroplę na liście kropel. Śmiało i dodaj SSH do kropli za pomocą adresu IP.

przygotuj się na aktualizację podstawowych witryn internetowych

Ebook, aby przyspieszyć swoją witrynę, zanim zaczniesz tracić ruch.

Dziękuję

Twoja lista jest na drodze do Twojej skrzynki odbiorczej.

Zainstaluj serwer WWW Nginx

możesz teraz zaktualizować listę pakietów i zainstalować Nginx. Uruchom następujące polecenie, aby to wykonać:

sudo apt updatesudo apt install -y nginx
  • Uwaga: – flaga y ma odpowiadać domyślną odpowiedzią na każde pytanie zadane podczas instalacji

w Ubuntu 16.04 Nginx jest wstępnie skonfigurowany, aby rozpocząć działanie po instalacji, więc po zakończeniu instalacji możesz odwiedzić adres IP swojej kropli w przeglądarce:

http://server_domain_or_ip

ściągnij demo z Githuba

użyję Git do ściągnięcia przykładowego projektu z Githuba, jest on preinstalowany z Ubuntu 16.04. Aby sprawdzić, czy jest już zainstalowany na twoim serwerze, użyj poniższego polecenia:

git -v

Jeśli pojawi się komunikat, że Git nie jest domyślnie zainstalowany, będziesz musiał uruchomić następujące polecenie, aby go zainstalować:

apt install -y git

następnie musisz użyć tego samego folderu, w którym znajduje się Domyślna strona serwera WWW Nginx, więc przejdź do katalogu publicznego:

CD /var/www

Usuń folder html, utwórz go i przenieś do niego:

rm -rf htmlmkdir htmlcd html

teraz Sklonuj repozytorium

// Install projectgit clone https://github.com/yemiwebby/varnish-demo.git

dzięki temu masz teraz przykładowy projekt zainstalowany na serwerze. Ale na razie nie będzie dostępny, a to dlatego, że nie zainstalowaliśmy PHP. Zróbmy to.

Możesz również polubić: używanie Memcached z PHP

instalacja PHP i konfiguracja Nginx do korzystania z procesora PHP

Nginx nie zawiera natywnego przetwarzania PHP, jak niektóre inne serwery internetowe. Zainstalujemy oprogramowanie o nazwie php-fpm i poinstruujemy Nginx, aby przekazał do niego wszystkie żądania PHP. Przejdź z powrotem do katalogu głównego serwera WWW i uruchom następujące polecenie, aby zainstalować moduł PHP-FPM:

$ cd ~$ sudo apt install php-fpm

po zakończeniu procesu instalacji możesz skonfigurować Nginx tak, aby korzystał z zainstalowanego procesora PHP. Otwórz domyślny plik konfiguracyjny bloku serwera Nginx za pomocą:

sudo nano /etc/nginx/sites-available/default

i zastąpić jego zawartość:

server { listen 80 default_server; listen :80 default_server; root /var/www/html; index index.php; server_name YOUR_SERVER_IP; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; }}

gdy skończysz, przeładuj Nginx, aby wprowadzić niezbędne zmiany:

$ sudo systemctl reload nginx

teraz możesz odwiedzić stronę na swoim ulubionym serwerze internetowym, używając adresu IP kropli:

http://ip_address

włączenie buforowania za pomocą Varnish

jeśli sprawdzisz stronę, aby wyświetlić nagłówki HTTP z karty sieć, nie zauważysz żadnych śladów lakieru, ponieważ nie jest zainstalowany ani skonfigurowany do obsługi żadnego żądania. Zmieńmy to instalując Varnish na naszym serwerze WWW. Aby to zrobić, wpisz następujące polecenie:

$ sudo apt install -y varnish

przejdzie to przez proces instalacji pamięci podręcznej Varnish na twoim serwerze. Po zakończeniu instalacji Uruchom i włącz lakier z:

systemctl start varnishsystemctl enable varnish

lakier domyślnie nasłuchuje na porcie 6081. Aby to potwierdzić, otwórz przeglądarkę i ponownie odwiedź swój adres IP kropli, ale tym razem upewnij się, że dodałeś:6081 jak pokazano poniżej:

Nginx, który jest serwerem internetowym odpowiedzialnym za ładowanie zawartości Twojej aplikacji internetowej, działa na porcie 80. Aby umożliwić Varnish przejęcie odpowiedzialności za buforowanie i renderowanie strony tak szybko, jak to możliwe, musi ona znajdować się pomiędzy klientem aplikacji internetowej a serwerem. Zapewni to, że każde żądanie do twojego serwera, które w większości będzie na porcie 80, zostanie przechwycone przez Varnish i w zależności od tego, czy jest to trafienie w cache, czy pominięcie, Varnish zareaguje na nie odpowiednio i zwróci odpowiednią odpowiedź.

zmienię proces konfigurując Varnish na porcie 80 i Nginx na porcie 8080. Aby to zrobić, ponownie Edytuj plik konfiguracyjny nginx swojej witryny. W naszym przypadku ten plik to / etc/nginx/sites-available / default. Zmień 80 na 8080:

server { listen 8080 default_server; listen :8080 default_server; root /var/www/html;}

Port 80 będzie teraz wolny do użycia dla lakieru. Przeładuj konfigurację Nginx za pomocą:

sudo systemctl reload nginx

i sprawdź dostępność swojej witryny za pomocą adresu IP z dołączonym portem 8080:

gdy wcześniej zainstalowano Varnish, na serwerze utworzono również dwa pliki konfiguracyjne. Są to:

  • /etc/default/varnish
  • /etc/varnish / default.vcl

użyję tych plików do konfiguracji, takich jak otwieranie portu dla lakieru i manipulowanie żądaniami. Teraz otwórz ten plik / etc / default / varnish:

sudo nano /etc/default/varnish

# Nasłuchuj na porcie 6081, Administracja na localhost:6082, a następnie do

# jeden serwer zawartości wybrany przez plik vcl, na podstawie żądania.

DAEMON_OPTS=” – a :6081 \

-t localhost:6082 \

-f / etc / varnish / default.vcl \

-s /etc/varnish/secret \

-s malloc,256m”

poszukaj linii powyżej i zmień-a: 6081 na-a: 80.

następnie otwórz plik /etc / varnish / default.vcl:

sudo nano /etc/varnish/default.vcl

i sprawdź, czy domyślny backend jest ustawiony na port 8080, ponieważ to tam serwuje Nginx od teraz. Poszukaj linii poniżej i upewnij się, że .port to 8080.

# domyślna definicja zaplecza. Ustaw tak, aby wskazywał na serwer treści.

 backend default { .host = "127.0.0.1"; .port = "8080"; }

następną rzeczą jest skopiowanie lakieru.plik usługi do naszego katalogu systemd. Umożliwi to systemd uruchomienie lakieru na porcie 80. Uruchom poniższe polecenie:

$ sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/

spowoduje to skopiowanie pliku usługi lakieru.

następnie otwórz:

$ sudo nano /etc/systemd/system/varnish.service

i poszukaj linii ExecStart:

Description=Varnish HTTP acceleratorDocumentation=https://www.varnish-cache.org/docs/4.1/ man:varnishdType=simpleLimitNOFILE=131072LimitMEMLOCK=82000ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.v$ExecReload=/usr/share/varnish/reload-vclProtectSystem=fullProtectHome=truePrivateTmp=truePrivateDevices=trueWantedBy=multi-user.target//ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m

teraz zmień-F – a: 6081 na-F-a: 80. Zapisz i zamknij plik.

jeśli sprawdzisz statystyki sieci za pomocą polecenia netstat:

:~# netstat -plntu

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:6081 0.0.0.0:* LISTEN 13257/varnishd

tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 13257/varnishd

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2440/nginx -g daemo

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1648/sshd

tcp6 0 0 :::6081 :::* LISTEN 13257/varnishd

tcp6 0 0 :::8080 :::* LISTEN 2440/nginx -g daemo

tcp6 0 0 :::22 :::* LISTEN 1648/SSHD

zauważysz, że pamięć podręczna Varnish nadal działa na porcie 6081. Zmień to poprzez ponowne uruchomienie lakieru:

systemctl daemon-reloadsystemctl restart varnish

a także zrestartuj Nginx.

sudo service nginx restart

w tym momencie, jeśli odwiedzisz adres IP swojej strony internetowej, zauważysz, że strona nadal działa idealnie, ale sprawdzenie nagłówka HTTP wskaże, że lakier jest zainstalowany i uruchomiony.

Może Ci Się Spodobać: Zintegruj PHP Opcache & spraw, aby Twoja aplikacja wygrywała z wydajnością

przegląd wewnętrznego lakieru

lakier uruchamia kilka procedur podczas zakończenia przetwarzania zawartości buforowania aplikacji internetowej. Rzućmy okiem na niektóre z najważniejszych procedur i co każdy z nich robi, aby zapewnić, że treści są dostarczane z prędkością światła, co z kolei poprawi wydajność aplikacji internetowej:

  • sub vcl_recv {}: jest to pierwsza linia, którą lakier trafi w momencie, gdy twój klient zaakceptuje żądanie.
  • sub vcl_backend_response {}: to wywołanie zwrotne jest wywoływane po odpowiedzi i zostało pobrane z serwera zaplecza. Możesz również wprowadzić modyfikacje w odpowiedzi tutaj w tym bloku.
  • sub vcl_backend_fetch {}:
  • sub vcl_deliver {}: jest to ostatnia procedura, która zostanie wykonana przez VCL przed wysłaniem odpowiedzi do klienta. Tutaj możesz łatwo zrobić pewne sprzątanie, takie jak usuwanie tego, czego nie chcesz, aby Klient widział i tak dalej.

P: Jak wyczyścić pamięć podręczną lakieru?

A: Możesz wyczyścić całą pamięć podręczną lakieru z wiersza poleceń za pomocą polecenia ban:
varnishadm „ban.url .”#Pasuje do wszystkich adresów URL
możesz również banować poszczególne bufory, opisując nazwę hosta:
varnishadm ” ban req .http.host == xxx.com ”

P: Jak wyłączyć pamięć podręczną lakieru?

A :możesz łatwo wyłączyć lakier ze swojej strony internetowej, edytując .plik htaccess z następującym kodem:
nagłówek dodaj „Cache-Control „”no-cache”
spowoduje to tymczasowe wyłączenie lakieru z twojej witryny. Możesz później włączyć lakier, usuwając następujący kod.

Q: Jak wyczyścić pamięć podręczną lakieru za pomocą CLI?

A :możesz wyczyścić lub wyczyścić pamięć podręczną lakieru, po prostu ponownie uruchamiając usługę lakieru. Spowoduje to wyczyszczenie całego bufora lakieru, ponieważ jest on domyślnie przechowywany w pamięci:
/etc/varnish restart
lub
service varnish restart

P: Jak sprawdzić, czy bufor lakieru działa, czy nie?

A: aby sprawdzić, czy Twoja usługa lakiernicza działa prawidłowo, użyj nagłówka X-Varnish, który informuje o aktywnym / nieaktywnym stanie Usługi. Aby dokładniej sprawdzić, czy uderza w pamięć podręczną, użyj nagłówka X-Cache, aby uzyskać pełną analizę pamięci podręcznych.

P: Varnish cache vs Memcached: który jest lepszy?

A: oba Memcached są przydatne w konkretnych domenach buforowania, jednak istnieją pewne różnice między nimi.
możesz używać Memcached jako rozproszonego zaplecza w pamięci do buforowania zasobów aplikacji.
podczas gdy Varnish jest używany jako odwrotne proxy do zewnętrznych buforowania żądań HTTP aplikacji.
Memcached może być określany jako system buforowania ogólnego przeznaczenia, ponieważ buforuje wyniki z bazy danych i wymaga niewielkich zmian w metodzie GET.
natomiast Varnish działa za serwerem WWW, buforuje strony WWW i nie wymaga zmian w kodzie.

Ostatnie słowa

w tym poście ledwo zarysowałem powierzchnię tego, co można zrobić z lakierem. Jest tak potężny, że możesz z nim zrobić o wiele więcej. Oprócz możliwości buforowania zawartości aplikacji internetowej i obsługi żądań, Varnish cache może być również używany jako load balancer i wiele więcej.

Sprawdź oficjalną dokumentację tutaj, aby dowiedzieć się więcej o lakierze i innych niesamowitych konfiguracjach, które można wykonać za jego pomocą. Możesz zostawić komentarz, pytanie lub sugestię w sekcji komentarzy poniżej.

podziel się swoją opinią w komentarzu. Skomentuj teraz

Udostępnij ten artykuł

Opinia klienta na

„Cloudways hosting ma jedną z najlepszych prędkości obsługi klienta i hostingu”

Sanjit C

Olususi K Oluyemi

entuzjasta technologii, pasjonat programowania i uzależniony od tworzenia stron internetowych, który uwielbia nowe technologie.

Połącz się na: forum społeczności Twittera

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ostatnie wpisy

  • niemetaliczne złoto i malowanie cierpliwości
  • Łatwe sposoby na Ciasto Pops bez formy
  • Przewodnik Uprawy Palmy Olejowej (Olej Palmowy)
  • nie pamiętasz hasła do iPoda nano
  • życie z anoreksją Nervosa
  • Google SketchUp Pro 2022 Crack 21.0.339
  • nadmierne wibracje silnika motocykla – przyczyny i rozwiązania
  • Jak otworzyć plik stp w autocad?
  • Dia de los Muertos Mask
  • Tworzenie ramki PEYOTE
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Archiwa

  • marzec 2022
  • luty 2022
  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org
© 2022 WCFV | Powered by Superbs Personal Blog theme