Ključna je ključna tehnika u modernom upravljanju web razvojem i infrastrukturom, posebno kada se bave web lokacijama sa visokim prometom. Lako, HTTP akcelerator visokih performansi, nudi snažan način provođenja strategija keširanja putem svog jezika za konfiguraciju laka (VCL). Kao dobavljač lakova, uzbuđen sam što podijelim neke uvide o tome kako implementirati efikasne strategije keširanja u lakiju VCL.


Razumijevanje osnova laka i vcl
Prije ronjenja u keširanjem strategije, ključno je shvatiti koji su laski i VCL. Lako je otvor za akreteru za web aplikaciju otvorenog kolica, često naziva se reverznim proxy kešom. Sjedi između klijenta i poslužitelja podrijetla, presretnuće zahtjeve i posluživanje predmemoriranog sadržaja kad god je to moguće. To značajno smanjuje opterećenje na porijeklu poslužitelja i poboljšava vrijeme odziva za korisnike.
VCL, s druge strane, jezik je specifičan za domenu koji se koristi za konfiguriranje lakova. Omogućuje vam definiranje načina na koji bi rekorb trebao riješiti dolazne zahtjeve, sadržaj keš memorije i interakciju s porijekla poslužiteljem. VCL skripte organiziraju se u podprograme, a svaka je odgovorna za određenu fazu u cjevovodu za obradu zahtjeva.
Postavljanje osnovne strategije keširanja
Najjednostavnija strategija keširanja u lakiju je u keširanju svih postavkih zahtjeva koji imaju mogućnost punjivog od strane poslužitelja porijekla. Evo osnovne VCL konfiguracije za postizanje ovoga:
VCL 4.0; Povratni zadani {.host = "your-origin-server.com"; .port = "80"; } sub vcl_recv {if (req.method == "dobiti") {povratak (hash); } Else {povratak (prolaz); }} sub vcl_backend_response {ii (beresp.status == 200) {set beresp.ttl = 3600S; // cache za povratak od 1 sata (isporuka); } Else {povratak (prolaz); }}
Uvcl_recvSubrout, provjeravamo je li metoda zahtjeva dobila. Ako jest, šaljemo zahtjev u proces keširanja (hash). U suprotnom, zahtjev prenosimo direktno na server porijekla bez keširanja (proći).
Uvcl_backend_ressponsePodprogram, provjeravamo je li kod statusa odgovora 200 (ok). Ako jeste, postavili smo vrijeme za uživanje (TTL) keširanog odgovora na 3600 sekundi (1 sat) i isporučujemo predmemorirani odgovor. U suprotnom, odgovor prenosimo direktno na klijenta bez keširanja.
Napredne strategije keširanja
Uslovno predmemorija
Ponekad možda želite predmetati sadržaj na osnovu određenih uvjeta, poput prisustva određenog zaglavlja ili vrijednosti parametra upita. Evo primjera uvjetnog keširanja na temelju parametra upita:
sub vcl_recv {if (req.method == "get" && req.url ~ "\? predmemorija = istina") {povratak (hash); } Else {povratak (prolaz); }}
U ovom primjeru, samo predmemoriraju samo zahtjeve koji imajupredmemorija = TRUEParametar upita u URL-u.
Nevaljavanje predmemorije
Nevažeći predmemorija je proces uklanjanja ili ažuriranja predmemoriranog sadržaja kada se obradili podaci promijenili. Lakish pruža nekoliko načina da poništava predmemoriju, poput upotrebečišćenjemetoda ili postavljanjem kraćeg TTL za dinamički sadržaj.
Evo primjera korištenjačišćenjeMetoda za poništavanje predmemorije:
sub vcl_recv {if (req.method == "pročišćavanje") {if (client.ip ~ čišćenje) {povratak (čišćenje); } else {povratak (Synth (405, "metoda nije dozvoljena"); }}}
U ovom primjeru omogućavamo klijentima s IP adrese koje odgovarajučišćenjeACL za slanje zahtjeva za pročišćavanje za poništavanje predmemorije.
Keširanje različitih vrsta sadržaja
Statička imovina u kemiranju
Statička sredstva poput CSS, JavaScript i slike mogu se dugoprijeti na keširati jer se ne mijenjaju često. Evo primjera predmemoriranja statičke imovine:
sub vcl_recv {if (req.method == "get" && req.url ~ "\. (CSS | JS | JPG | PNG) $") {povratak (hash); } Else {povratak (prolaz); }} sub vcl_backend_ressponse {ii (beresp.status == 200 && req.url ~ "\. (CSS | JS | JPG | PNG) $") {set beresp.ttl = 86400S; // cache za 1 dan povratak (isporuku); } Else {povratak (prolaz); }}
Gaching dinamički sadržaj
Dinamički sadržaj, poput korisničkih stranica ili podaci u stvarnom vremenu, zahtijeva pažljivu strategiju keširanja. Jedan je pristup upotreba surogatnih tipki za označavanje keširanog sadržaja i poništiti ga kada se relevantne promjene podataka promijene.
sub vcl_backend_ressponse {ii (beresp.status == 200 && beresp.http.surrogate-ključ) {set beresp.hash_always_misss = false; set beresp.ttl = 300s; // cache za 5 minuta povrat (isporuka); } Else {povratak (prolaz); }}
U ovom primjeru, taksemo odgovore koji imajuSurogat-ključzaglavlje 5 minuta.
Oduzimanje ugrađenih funkcija i varijabli varnice
Lako pruža bogat skup ugrađenih funkcija i varijabli koje se mogu koristiti za implementaciju sofisticiranijih strategija keširanja. Na primjer,req.http.cookieVarijabla se može koristiti za isključenje zahtjeva s određenim kolačićima od keširanja.
sub vcl_recv {if (req.method == "get" &&! req.http.cookie ~ "session_id") {povratak (hash); } Else {povratak (prolaz); }}
Zaključak
Provođenje strategija keširanja u lakiju VCL mogu značajno poboljšati performanse i skalabilnost vaših web aplikacija. Razumijevanjem osnova lakih i VCL-a i utječe na napredne tehnike kao što su uslovne keširanje, tastera za predmemoriju i surogat, možete optimizirati vaše postavljanje keširanja kako biste udovoljili specifičnim potrebama vaše aplikacije.
Ako ste zainteresirani za učenje više o našim lakinskim rješenjima ili raspravljajući o tome kako vam možemo pomoći da implementirate najbolje strategije keširanja za svoje poslovanje, molimo da nam posegnete konsultaciju o nabavci. Nudimo širok spektar proizvoda za lak, uključujućiJasni kaput na vodenoj bazi,Poliuretanski sjaj na bazi vode, iMat kaput na bazi vode.
Reference
- Softverska dokumentacija laka
- Umrežavanje pregledača visokog performansi Ilya Grigorik
