
indiferent de dimensiunea și complexitatea aplicației dvs., utilizatorii vor prefera să rămână sau să revină dacă se bucură de viteza cu care este redat conținutul dinamic din aplicația dvs. Performanța îmbunătățită, livrarea rapidă a paginilor și răspunsul rapid al serverului sunt, de asemenea, câțiva dintre puținii factori care îi mențin pe utilizatori conectați la aplicația dvs.
acestea și multe altele sunt factorii care contribuie la orice aplicație web de succes și populară. Deși există mai multe tehnici și strategii disponibile pentru a ajuta la accelerarea aplicațiilor web moderne, efectuarea cache-ului s-a dovedit a fi mult mai valoroasă.
fiecare solicitare către o anumită pagină de pe site-ul dvs. web comunică direct și primește răspunsuri de la serverul dvs. Deci, de fiecare dată când un utilizator vizitează o anumită pagină, front-end-ul dvs. face un apel HTTP pentru a prelua conținutul corespunzător și serverul dvs. este obligat să răspundă în consecință.
pentru o aplicație web la scară mică, acest lucru ar putea să nu fie prea mult, dar odată ce aplicația dvs. începe să se scaleze, un număr imens de solicitări către serverul dvs. web vor începe treptat să devină prea mult de gestionat. Aceasta este adesea considerată o supraîncărcare inutilă.
servirea unei pagini web necesită o mulțime de resurse – mai ales atunci când este generată dinamic ca cele create prin PHP. Prin urmare, în acest tutorial lac cache, vă voi arăta cum să creșteți viteza aplicației PHP fără a scala neapărat vertical sau orizontal, dar folosind lac.
ce este Lac de memorie Cache și de ce să-l folosească
lac de memorie cache este un accelerator de aplicații web, de asemenea, cunoscut sub numele de cache HTTP reverse proxy. Acționează mai mult ca un om de mijloc între clientul dvs. (adică utilizatorul) și serverul dvs. web. Asta înseamnă că, în loc ca serverul dvs. web să asculte direct cererile de conținut specific tot timpul, lac își va asuma responsabilitatea.
odată ce o cerere vine pentru prima dată, lac în PHP se va direcționa către serverul de web pentru un răspuns adecvat. Acest răspuns va fi memorat în cache de lac în PHP înainte de a fi trimis clientului. Interesant este că orice solicitare ulterioară pentru un astfel de conținut va fi servită direct din memoria cache a lacului în loc să meargă direct la serverul web. Cu acest lucru în loc, aplicația web va fi capabil de a gestiona un număr foarte mare de cereri concurente de la mai mulți utilizatori ca serverul nu va fi chiar pornit. Acest lucru va duce la o creștere magică a performanței pentru aplicația dvs.
PHP lac utilizează lac limbaj de configurare (VCL) pentru a vă permite să modificați comportamentul său prin adăugarea de logica pentru a manipula cereri. Puteți manipula răspunsurile care revin de pe serverul web, puteți elimina cookie-urile sau puteți adăuga anteturi la răspuns.
flux de lucru lac
Get /some-web-page (client) — cache – ul-ul-cache – ul-ul-ul-web-page (Server) – cache-ul-ul-ul-ul-ul înapoi la client.

să presupunem că prima cerere la pagina durează aproximativ 200ms.
acum, odată ce cache conținutul unei astfel de pagini complet, fluxul se schimbă în întregime și cererea de la client la aceeași pagină nu va lovi serverul direct din nou, deoarece lacul a memorat-o deja mai devreme. Aruncati o privire la ilustrația de mai jos:
GET /some-web-page (client) – cache-ul de la sută (HIT) . — > și înapoi la client
o cerere ulterioară la pagina 10ms…..
minunat nu?
prin urmare, ideea este de a reduce numărul de cereri trimise la serverul backend cât mai mult posibil. Aceasta va crește în schimb viteza de redare a paginii pentru aplicația dvs. web.
Noțiuni de bază cu configurarea lacului
acum, pe măsură ce ați procedat la introducerea de bază a lacului și a capacităților sale de cache, este timpul să configurați acum Lacul și să îl utilizați pentru o aplicație PHP. Noțiuni de bază cu lac este ușor. Pentru a configura corect, vom folosi și vom trage o aplicație existentă de la GitHub și o vom implementa pe serverul DigitalOcean. După aceea, vom configura Lacul.
apoi, configurați un cont gratuit pe DigitalOcean și, odată finalizat, faceți clic pe butonul „Creați” și, din meniul derulant, selectați „picături” pentru a crea o nouă picătură.
Derulați în jos pentru a selecta Ubuntu 16.04 și rețineți că ar trebui să selectați dimensiunea unei picături, cea mai mică dimensiune ar trebui să fie suficientă pentru acest tutorial cache de lac.
Derulați în jos pentru a adăuga o cheie SSH, dacă aveți una. Acest lucru vă va ajuta să vă conectați cu ușurință la server mai târziu, altfel va trebui să verificați căsuța de e-mail pentru parola implicită pentru picătura dvs. Apoi, adăugați un nume de gazdă. Am numit-o pe a mea lac-demo. Acum faceți clic pe Creare pentru a începe crearea picăturii.
odată ce procesul este finalizat, veți vedea noua picătură în lista picăturilor. Mergeți mai departe și adăugați SSH în picătura dvs. folosind adresa IP.



pregătiți-vă pentru core Web Vitals Update
Ebook pentru a accelera site-ul dvs. înainte de a începe să pierdeți trafic.
Vă mulțumim
lista dvs. este în drum spre căsuța de e-mail.
instalați serverul web Nginx
acum Puteți actualiza lista de pachete și instalați Nginx. Rulați următoarea comandă pentru a efectua acest lucru:
sudo apt updatesudo apt install -y nginx
- notă: – y pavilion este de a răspunde cu un răspuns implicit la orice întrebare pusă în timpul instalării
pe Ubuntu 16.04, Nginx este pre-configurat pentru a începe să ruleze la instalare, astfel încât odată ce instalarea este completă, puteți vizita adresa IP a picăturii în browser:
http://server_domain_or_ip
trageți demo de la GitHub
voi folosi Git pentru a trage proiectul de probă de la GitHub, vine preinstalat cu Ubuntu 16.04. Pentru a verifica dacă este deja instalat pe serverul dvs. sau nu, utilizați comanda de mai jos:
git -v
Dacă primiți un mesaj că Git nu este instalat în mod implicit, atunci va trebui să rulați următoarea comandă pentru ao instala:
apt install -y git
apoi, trebuie să utilizați același folder care găzduiește pagina implicită pentru serverul web Nginx, deci navigați la directorul public:
cd /var/www
scoateți folderul html, recreați-l și mutați-l în el:
rm -rf htmlmkdir htmlcd html
acum, clona repository
// Install projectgit clone https://github.com/yemiwebby/varnish-demo.git
cu acest lucru în loc, aveți acum un proiect eșantion instalat pe server. Dar nu va fi accesibil pentru moment, și asta pentru că nu am instalat PHP. Să facem asta.
s-ar putea să vă placă și: utilizarea Memcached cu PHP
instalarea PHP și configurarea Nginx pentru a utiliza procesorul PHP
Nginx nu conține procesare PHP nativă ca alte servere web. Vom instala un software numit php-fpm și vom instrui Nginx să-i transmită toate solicitările PHP. Navigați înapoi la directorul rădăcină al serverului web și executați următoarea comandă pentru a instala modulul PHP-FPM:
$ cd ~$ sudo apt install php-fpm
după finalizarea procesului de instalare, puteți configura acum Nginx pentru a utiliza procesorul PHP instalat. Deschideți fișierul de configurare implicit al blocului de server Nginx cu:
sudo nano /etc/nginx/sites-available/default
și înlocuiți conținutul cu:
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; }}
când ați terminat, reîncărcați Nginx pentru a face modificările necesare:
$ sudo systemctl reload nginx
acum, Puteți vizita pagina din serverul web preferat folosind adresa IP a picăturii:
http://ip_address
activarea cache-ului folosind lac
dacă inspectați pagina pentru a vizualiza anteturile HTTP din fila Rețea, nu veți observa urme de lac, deoarece nu este instalat sau configurat pentru a gestiona nicio solicitare. Să schimbăm asta instalând lac pe serverul nostru web. Pentru aceasta, tastați următoarea comandă:
$ sudo apt install -y varnish
aceasta va trece prin procesul de instalare a unui cache de lac pe serverul dvs. După finalizarea instalării, porniți și activați Lacul cu:
systemctl start varnishsystemctl enable varnish
lac implicit ascultă pe portul 6081. Pentru a confirma acest lucru, deschideți browserul și vizitați din nou adresa IP a picăturii, dar de data aceasta, asigurați-vă că adăugați:6081 așa cum se arată mai jos:
Nginx, care este serverul web responsabil pentru încărcarea conținutului aplicației dvs. web, rulează pe portul 80. Pentru a permite Varnish să își asume responsabilitatea de cache și redare a paginii cât mai repede posibil, trebuie să stea între clientul dvs. de aplicații web și server. Acest lucru va asigura că orice solicitare către serverul dvs., care va fi în mare parte pe portul 80, va fi interceptată de lac și, în funcție de faptul dacă este o lovitură cache sau o ratare, Lacul va acționa în consecință și va returna răspunsul adecvat.
voi schimba procesul prin configurarea lacului pe portul 80 și Nginx pe portul 8080. Pentru a face acest lucru, Editați din nou fișierul de configurare Nginx al site-ului dvs. În cazul nostru, acest fișier este /etc/nginx/sites-available/default. Schimbați 80 la 8080:
server { listen 8080 default_server; listen :8080 default_server; root /var/www/html;}
portul 80 va fi acum liber de utilizat pentru lac. Reîncărcați configurația Nginx cu:
sudo systemctl reload nginx
și verificați disponibilitatea site-ului dvs. web utilizând adresa IP cu portul 8080 anexat la acesta:
când lac a fost instalat mai devreme, au fost create și două fișiere de configurare pe server. Acestea sunt:
- /etc / default / lac
- /etc/lac/implicit.vcl
voi folosi aceste fișiere pentru configurații, cum ar fi deschiderea unui port pentru lac și manipularea cererilor. Acum, deschideți acest fișier / etc / default / lac:
sudo nano /etc/default/varnish
# asculta pe port 6081, administrare pe localhost:6082 și redirecționați către
# un server de conținut selectat de fișierul vcl, pe baza solicitării.
DAEMON_OPTS=” – a :6081 \
-T localhost:6082 \
-f / etc / lac / implicit.vcl \
– s /etc/lac/secret \
– s malloc,256M”
căutați linia de mai sus și schimbați-a :6081 la-A :80.
apoi, deschideți fișierul /etc/lac/implicit.vcl:
sudo nano /etc/varnish/default.vcl
și verificați dacă backend-ul implicit este setat la portul 8080, deoarece de aici servește Nginx de acum. Uita-te pentru linia de mai jos și asigurați-vă că .portul este 8080.
# definiție backend implicită. Setați acest lucru pentru a indica serverul dvs. de conținut.
backend default { .host = "127.0.0.1"; .port = "8080"; }
următorul lucru este să copiați Lacul.fișier de serviciu în directorul nostru systemd. Acest lucru va permite systemd să pornească lac pe portul 80. Rulați comanda de mai jos:
$ sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/
aceasta va copia fișierul serviciului de lac.
apoi, deschideți-l:
$ sudo nano /etc/systemd/system/varnish.service
și căutați linia 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
acum schimba-F-a: 6081 la-F-A: 80. Salvați și ieșiți din fișier.
dacă verificați statisticile de rețea utilizând comanda 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 :::* Asculta 1648 /sshd
veți observa că lac cache este încă rulează pe portul 6081. Schimbați asta prin repornirea lacului:
systemctl daemon-reloadsystemctl restart varnish
și, de asemenea, reporniți Nginx.
sudo service nginx restart
în acest moment, dacă vizitați adresa IP a paginii dvs. web, veți observa că site-ul web funcționează perfect, dar inspectarea antetului HTTP va indica faptul că lacul este instalat și rulează.
S-Ar Putea Să Vă Placă: Integrați PHP Opcache & Faceți aplicația dvs. să câștige mare cu performanță
o prezentare generală a lacului intern
Lacul declanșează câteva rutine în timpul finalizării procesării conținutului de cache al aplicației dvs. web. Să aruncăm o privire la unele dintre cele mai importante rutine, și ceea ce fiecare face pentru a se asigura că conținutul sunt livrate la viteza luminii, care, la rândul său, va îmbunătăți performanța aplicației web:
- sub vcl_recv {}: aceasta este prima linie pe care lacul o va atinge în momentul în care clientul dvs. acceptă o solicitare.
- sub vcl_backend_response{}: acest apel invers este apelat după răspuns și a fost preluat de pe serverul backend. Puteți face, de asemenea, modificări la răspunsul aici, în acest bloc.
- sub vcl_backend_fetch {}:
- sub vcl_deliver {}: aceasta este ultima rutină pe care VCL o va lovi înainte de a trimite un răspuns clientului. Aici, puteți face cu ușurință unele curățări, cum ar fi eliminarea a ceea ce nu doriți ca clientul să vadă și așa mai departe.
Î: Cum să ștergeți memoria cache a lacului?
A: Puteți curăța toate cache-urile de lac din linia de comandă folosind comanda ban:
varnishadm „ban.url .”#Se potrivește cu toate adresele URL
de asemenea, puteți interzice anumite cache-uri descriind numele gazdei:
varnishadm „ban req.http.gazdă == xxx.com ”
Î: Cum să dezactivați memoria cache a lacului?
A: puteți dezactiva cu ușurință lac de pe site-ul dvs. prin editarea .fișier htaccess cu următorul cod:
antet adăugați „Cache-Control” „no-cache”
acest lucru va dezactiva temporar Lacul de pe site-ul dvs. web. Puteți activa ulterior Lacul eliminând următorul cod.
Î: Cum să curățați cache-ul de lac cu CLI?
A: puteți șterge sau curăța memoria cache a lacului prin simpla repornire a serviciului de lac. Aceasta va curăța toată memoria cache a lacului, deoarece este stocată în memorie în mod implicit:
/etc/Restart lac
sau
restart lac de serviciu
Î: Cum să verificați dacă memoria cache a lacului funcționează sau nu?
A: pentru a verifica dacă serviciul dvs. de lac funcționează bine sau nu, utilizați antetul X-lac care vă permite să cunoașteți starea activă/inactivă a serviciului. Pentru a arăta mai detaliat dacă lovește memoria cache, utilizați antetul X-Cache pentru a obține o analiză completă a cache-urilor.
Î: lac cache vs Memcached: care este mai bine?
A: ambele lacuri & Memcached sunt utile în special domenii de cache, cu toate acestea, există unele diferențe între cele două.
puteți utiliza Memcached ca un backend în memorie, distribuite pentru cache aplicații active.
în timp ce lacul este folosit ca un proxy invers pentru cererile HTTP ale aplicației cache extern.
Memcached poate fi numit ca sistem de cache de uz general, deoarece cache rezultate din Baza de date și necesită mici modificări în metoda GET.
întrucât, lac de lucrări în spatele serverului web, cache pagini web, și nu necesită modificări în cod.
cuvinte finale
în acest post, abia am zgâriat suprafața a ceea ce puteți face cu lac. Este atât de puternic încât poți face mult mai mult cu el. În afară de posibilitatea de a memora în cache conținutul aplicației dvs. web și de a gestiona cererile, cache-ul de lac poate fi folosit și ca echilibrator de sarcină și multe altele.
verificați documentația oficială aici pentru a afla mai multe despre lac și alte configurații minunate care pot fi efectuate folosind-o. Simțiți-vă liber să lăsați un comentariu, o întrebare sau o sugestie în secțiunea de comentarii de mai jos.
partajați acest articol
revizuirea clienților la
„Cloudways hosting are una dintre cele mai bune servicii pentru clienți și viteza de găzduire”
Sanjit C
Olususi K Oluyemi
un pasionat de tehnologie, ciudat de programare și un drogat de dezvoltare web care iubește să îmbrățișeze noile tehnologii.