de Kevin Kononenko

Web Caching explicat prin cumpărarea de lapte la supermarket

Web Caching explicat prin cumpararea de lapte la supermarket

Dacă ați cumpărat vreodată lapte la supermarket, atunci puteți înțelege stocarea în cache a serverului și a browserului.

Dacă sunteți un utilizator pasionat de internet (probabil că sunteți), ați beneficiat de stocarea cache în mod repetat. Dar, s-ar putea să nu știți când sau cum funcționează magia sa din culise.

Din perspectiva unui dezvoltator, stocarea în cache face mult mai ușoară crearea de aplicații web și servere web performante. În loc să fie nevoie să optimizeze în mod constant servere care sunt copleșite de mii de cereri, dezvoltatorii pot implementa protocoale de cache pentru a face viața mult mai ușoară.

Deoarece cache-ul ar putea face diferența între 1 secundă pentru a încărca o pagină și 2 secunde, impactul se poate simți puțin … copleșitor. Dar, este necesar dacă doriți să gestionați un volum mare de utilizatori.

ad-banner

După ce am folosit cache-ul într-o aplicație web din trecut, mi-am dat seama că trebuia să existe o modalitate mai bună de a o explica decât să mergem doar prin terminologie. Am observat că se aliniază foarte bine cu calea laptelui de la o fermă la frigiderul tău, așa că m-am gândit că ar fi o modalitate mai bună de a-l explica.

Pentru a înțelege acest ghid, trebuie doar să știți despre elementele de bază ale serverelor web. Să intrăm în asta!

Cum ar arăta internetul fără cache?

Înainte de a intra în cache, să ne gândim la ce ar arăta internetul fără cache. Imaginați-vă, pentru o clipă, că locuiți în anii 1700 sau 1800 într-o zonă rurală. Dețineți o fermă și nu există nicio instalație frigorifică disponibilă. Aveți câteva vaci la ferma dvs., dar laptele lor nu este la fel de valoros, deoarece se va strica repede.

Întreruperea rapidă: unele culturi încă nu au acces la refrigerare. Vor bea fie lapte crud direct din ugerul unei vaci, fie amestecați laptele cu boabe și lăsați-l să fermenteze. Interesant.

ORICUM, vrei să-ți vinzi laptele altora din satul tău. Dar vor avea un timp foarte limitat pentru a bea laptele. Să spunem că una dintre vacile tale poate produce un galon de lapte pe zi. Dar, dacă prea mulți oameni se prezintă la ferma ta în căutarea laptelui, va trebui să le trimiți acasă și să le ceri să aștepte până a doua zi.

0*UqjXaIdDFuVLfE5k

De asemenea, nici nu vă puteți gândi să adăugați mai multe vaci și să vă extindeți operațiunea, deoarece aveți o distribuție atât de limitată. Doar ceilalți membri ai satului tău îți pot cumpăra laptele. Aveți niște limite clare.

0*LaOWTms2NkZtDFj5

Fără cache, sunteți limitat de puterea de calcul a serverelor dvs. Memorarea în cache este utilizată pentru a încărca active statice, cum ar fi:

  • Imagini
  • CSS
  • Fișiere HTML statice
  • Fișiere JavaScript

Un server, în mod implicit, trebuie să trimită un răspuns nou pentru fiecare cerere primită. Dar, o cerere de încărcare a unei pagini ar putea însemna de fapt 4 cereri separate – una din fiecare dintre categoriile de mai sus. Când luați în considerare fișiere de imagine mai mari, serverele dvs. pot deveni copleșite de utilizatori din întreaga lume. Apoi, utilizatorii vor experimenta timpi de încărcare încet în timp ce așteaptă încărcarea paginii lor.

0*4ajis8HoFZeo7SRf

În mod ideal, ați dori să ușurați cererea de pe serverele dvs., stocând răspunsurile la solicitările obișnuite. Serverul dvs. nu ar trebui să gestioneze fiecare nouă solicitare individuală, dar în schimb, memoria cache ar putea oferi un răspuns imediat. Puteți plăti întotdeauna pentru mai multe servere, dar acest lucru poate duce la cheltuieli incontrolabile.

Ce este stocarea în cache a serverului?

Înapoi la scenariul nostru de fermă. Știți ce ar face mult mai ușor să conduceți o fermă de lactate de succes?

Un supermarket cu refrigerare!

În acest fel, oamenii nu vor trebui să se prezinte la ferma dvs. și să consume laptele imediat. Veți putea să-l păstrați în siguranță pentru câteva săptămâni la rând.

Supermarketul elimină o mulțime de stres din ferma dvs., deoarece vacile dvs. nu vor fi așteptate să producă în timp real. Supermarketul se va ocupa de cerere. Trebuie doar să mențineți vacile în fiecare zi. Chiar mai bine, locuitorii din toate satele din jur pot cumpăra acum lapte de la ferma dvs., deoarece va fi întotdeauna disponibil în frigider.

1611530049 547 Web Caching explicat prin cumpararea de lapte la supermarket
1611530049 398 Web Caching explicat prin cumpararea de lapte la supermarket

La fel ca un supermarket, un cache de pe server va gestiona solicitările populare și va livra conținut mult mai rapid și mai sigur.

În imaginea de mai sus, folosesc termenul proxy în cache. Un proxy în cache este un server care stochează fișierele statice care sunt utilizate pentru a răspunde la solicitările obișnuite. Un proxy în cache va intercepta cererile comune și va oferi rapid un răspuns. Împiedică solicitările respective să vă streseze principalele servere web.

Probabil că aveți o grămadă de întrebări de genul:

  1. Ce determină o cerere „populară”?
  2. Cât timp proxy-ul va memora în cache răspunsurile?

Acest lucru ar necesita un tutorial mai lung despre configurarea cache-ului, dar pentru moment, ar trebui să știți despre un concept important numit prospeţime. Proxy-ul de stocare în cache va avea fișiere diferite care au fost stocate în cache la momente diferite și trebuie să decidă dacă ar trebui să mai difuzeze aceste fișiere. Acest lucru va depinde de dumneavoastră politica de cache.

Acest lucru funcționează la fel ca laptele într-un supermarket. Un manager de supermarket trebuie să decidă cât timp îți vor ține laptele înainte de al arunca. Proxy-urile în cache își măsoară succesul printr-un raport de accesări cache – procentul de conținut care poate fi difuzat prin serverul de cache.

Ce este un CDN?

Până în prezent, există un magazin alimentar care vă vinde laptele. Deși aceasta este o mare îmbunătățire, încă nu aveți nicio modalitate de a vă transmite laptele către oameni din afara acestui magazin local. Va trebui să adăugați mai multe magazine dacă doriți să vă extindeți operațiunea.

Deci, să presupunem că începeți să vă distribuiți laptele în mai multe supermarketuri. Acum, puteți satisface clienții într-o gamă geografică mult mai largă. Acest lucru este similar cu o rețea de livrare de conținut sau un CDN. Un CDN este o serie de servere proxy (așa cum am discutat mai sus) situate în întreaga lume.

În calitate de utilizator final, probabil că simțiți că internetul de mare viteză permite încărcării foarte rapide a majorității site-urilor. Cu toate acestea, acest lucru se întâmplă doar pentru că utilizează CDN-uri pentru a livra fișiere statice la viteză rapidă!

Dacă vă aflați în Anglia și încercați să încărcați un fișier memorat în cache într-un server din Virginia, veți avea o anumită întârziere, deoarece semnalul original poate călători atât de repede de-a lungul a mii de mile de cablu. Un proxy local de stocare în cache din Regatul Unit ar permite site-ului să se încarce mai repede.

1611530050 495 Web Caching explicat prin cumpararea de lapte la supermarket
1611530050 21 Web Caching explicat prin cumpararea de lapte la supermarket

Deci, serverele dvs. pot trimite o copie a activelor statice către fiecare dintre aceste servere proxy din rețeaua dvs. CDN și pot gestiona cererile locale până când activele nu mai sunt „proaspete”. Unii furnizori de CDN obișnuiți includ Rackspace, Akamai și Amazon Web Services.

Cum rămâne cu cache-ul browserului?

Acum, oamenii din toată țara (sau din lume) pot aduce acasă lapte rece de la ferma dvs. Există doar o problemă – nu au cum să o stocheze în propriile case. Clienții dvs. încă trebuie să bea laptele destul de repede după ce îl cumpără și apoi să revină la magazinul alimentar pentru mai multe. Deci, acest sistem încă nu servește clienților deosebit de bine.

Soluția? Frigider!

Cu un frigider, puteți păstra laptele local și puteți evita o călătorie de întoarcere la supermarket. În termeni de cache, vorbim despre o locație complet separată pentru stocarea activelor statice, deoarece se află pe partea clientului sau pe același computer cu browserul. Serverul nostru proxy a fost situat într-o locație îndepărtată.

Acest lucru este excelent pentru site-uri precum Facebook sau Amazon pe care le-ați putea vizita frecvent. Este minunat și pentru costurile serverului lor, deoarece pot reduce numărul de cereri de care trebuie să trateze.

1611530051 512 Web Caching explicat prin cumpararea de lapte la supermarket
1611530051 519 Web Caching explicat prin cumpararea de lapte la supermarket

Un lucru cheie de remarcat – NU spunem că laptele ajunge magic în frigider! În continuare trebuie să faceți acea solicitare inițială care ajunge fie la server, fie la serverul proxy. După aceea, puteți cache unele dintre fișiere la nivel local.

Cum știe browserul dvs. când solicitați fișiere noi de la server? Altfel, nu veți experimenta niciodată versiuni actualizate ale acestor fișiere locale.

Ei bine, la fel cum producătorii de lapte pun o dată pe ambalajul lor de lapte, serverele vor adăuga un fel de identificator în antetul de răspuns HTTP. Există de fapt 4 sisteme separate pentru cache HTTP. Scenariul prezentat mai sus seamănă foarte mult cu metoda „data expirării”. Unele dintre celelalte metode necesită în continuare ca browserul dvs. să verifice cu serverul înainte de a trimite fișierul în cache.

0*7yAXQNZN 0XzIQHB

Când începeți să utilizați cache

Să presupunem că creați prima aplicație web. Până când nu veți avea mii de utilizatori, probabil că nu va trebui să vă faceți griji cu privire la protocoalele de stocare în cache, deoarece costurile serverului vor fi în continuare mici. Cu toate acestea, pe măsură ce creșteți dimensiunea, va trebui să implementați cache-ul dacă doriți ca aplicația dvs. să se încarce rapid.

Heroku, de exemplu, este un instrument excelent pentru implementarea primei aplicații web. Dar, vă cere să utilizați un serviciu separat pentru implementarea cache-ului, cum ar fi Amazon CloudFront sau CloudFlare. Acest lucru va dura mai mult timp pentru a învăța.

Din partea browserului, probabil că ați experimentat stocarea în cache atunci când încercați să reîncărcați o pagină cu active statice noi, dar pagina pur și simplu nu se va schimba. Indiferent de câte ori reîmprospătați pagina, nimic nu se schimbă.

Acest lucru se întâmplă, de obicei, din cauza unui protocol de cache în partea browserului. Pentru a ocoli memoria cache a browserului și pentru a solicita noi materiale de la server, puteți utiliza Cmd + Shift + R pe un Mac sau Ctrl + Shift + R pe computer.

Obțineți mai multe tutoriale vizuale

V-a plăcut acest tutorial? Dă-i „palme”! Sau, înscrieți-vă aici pentru a obține cele mai recente tutoriale vizuale de pe blogul CodeAnalogies.