Hej tamo! Kao dobavljač Varnish-a, iz prve ruke sam vidio kako postavljanje HTTP zaglavlja za keširanje u Varnish VCL-u može biti izmjena za performanse web stranice. U ovom blogu, provest ću vas kroz proces korak po korak.
Prvo, hajde da shvatimo zašto su HTTP zaglavlja keširanja toliko važna. Kada korisnik posjeti web stranicu, pretraživač od servera traži resurse kao što su HTML, CSS, JavaScript i slike. Bez odgovarajućeg keširanja, server mora svaki put obraditi ove zahtjeve, što može usporiti web lokaciju, posebno tokom perioda velikog prometa. HTTP zaglavlja keširanja govore pretraživaču i drugim posredničkim kešovima (kao što je Varnish) koliko dugo mogu pohraniti određeni resurs i ponovo ga koristiti bez potrebe da se vrate na server.


Osnove lakiranja VCL
Varnish Configuration Language (VCL) se koristi za kontrolu načina na koji se Varnish ponaša. To je kao skup pravila kojih se Varnish pridržava kada obrađuje zahtjeve i odgovore. Postoji nekoliko ključnih potprograma u VCL-u na koje ćemo se fokusirati za postavljanje zaglavlja keširanja:vcl_recv,vcl_backend_response, ivcl_deliver.
vcl_recv
Thevcl_recvpotprogram se poziva kada Varnish primi zahtjev od klijenta (obično pretraživača). Ovo je odlično mjesto za donošenje odluka o tome hoćete li keširati zahtjev ili ne. Na primjer, možda želite da isključite određene vrste zahtjeva, poput onih za dinamički sadržaj koji se često mijenja.
sub vcl_recv { # Ne keširaj POST zahteve if (req.method == "POST") { return (pass); } # Ovdje možete dodati još uslova na osnovu URL obrazaca if (req.url ~ "^/admin/") { return (pass); } }
U ovom kodu kažemo Varnish-u da ne kešira POST zahtjeve jer oni obično uključuju slanje obrasca i vjerovatno će biti dinamični. Također isključujemo zahtjeve koji počinju sa/admin/jer su vjerovatno za administrativnu oblast stranice koja ima dinamički sadržaj.
vcl_backend_response
Thevcl_backend_responsepotprogram se poziva kada Varnish primi odgovor od pozadinskog servera. Ovo je mjesto gdje možemo postaviti ili modificirati zaglavlja keširanja.
sub vcl_backend_response { # Podesite podrazumevano vreme keširanja za sve odgovore postavljeno beresp.ttl = 3600s; # Možete postaviti različita vremena keširanja na osnovu tipa sadržaja if (beresp.http.Content - Type ~ "^text/html") { set beresp.ttl = 1800s; } # Dodaj prilagođeni keš - kontrolni set zaglavlja beresp.http.Cache - Control = "javno, max - age=3600"; }
Ovdje postavljamo zadano vrijeme - do - uživo (TTL) od 3600 sekundi (1 sat) za sve odgovore. Za HTML sadržaj, smanjujemo TTL na 1800 sekundi (30 minuta) jer bi se HTML mogao češće mijenjati. Takođe dodajemo aCache - kontrolazaglavlje, koje je standardno HTTP zaglavlje koje govori pretraživaču i drugim kešovima kako da rukuju resursom.
vcl_deliver
Thevcl_deliverpotprogram se poziva neposredno prije nego što Varnish pošalje odgovor klijentu. Ovo možete koristiti za dodavanje ili izmjenu zaglavlja koje će klijent vidjeti.
sub vcl_deliver { # Dodajte prilagođeno zaglavlje da naznačite da je odgovor keširan od strane Varnish skupa resp.http.X - Cached - By = "Varnish"; }
U ovom primjeru dodajemo prilagođeno zaglavljeX - Spremljeno u memoriju - Autorda obavijesti klijenta da je odgovor keširao Varnish.
Napredni scenariji za keširanje
Pogledajmo neke naprednije scenarije za postavljanje zaglavlja za keširanje.
Cache Busting
Ponekad želite da naterate pretraživač da preuzme novu verziju resursa, čak i ako je još uvek unutar vremena keširanja. To možete učiniti dodavanjem broja verzije ili hash URL-u resursa. U VCL-u ovo možete riješiti uklanjanjem broja verzije iz URL-a prije nego što ga proslijedite na pozadinu.
sub vcl_recv { if (req.url ~ "\?v=[0 - 9]+$") { set req.url = regsub(req.url, "\?v=[0 - 9]+$", ""); } }
Ovaj kod uklanja?v=123dio iz URL-a, tako da Varnish može keširati resurs na osnovu originalnog URL-a bez broja verzije.
Uvjetno keširanje
Možda biste željeli keširati resurs samo ako su ispunjeni određeni uvjeti. Na primjer, možete keširati stranicu samo ako ima specifičan HTTP statusni kod.
sub vcl_backend_response { if (beresp.status == 200) { set beresp.ttl = 3600s; set beresp.http.Cache - Control = "javno, max - starost=3600"; } else { set beresp.ttl = 0s; set beresp.http.Cache - Control = "ne - cache"; } }
Ovdje keširamo uspješne odgovore (statusni kod 200) sat vremena, ali ne keširamo druge odgovore.
Korištenje naših lakova
U našoj kompaniji nudimo niz proizvoda vezanih za Varnish koji mogu učiniti postavljanje i upravljanje HTTP zaglavljima za keširanje još lakšim. Na primjer, našMat gornji premaz na bazi vodeje odlična opcija za web stranice koje žele glatku, mat završnu obradu, a istovremeno imaju koristi od optimiziranog keširanja. Dolazi s unaprijed konfiguriranim VCL predlošcima koje možete lako prilagoditi svojim specifičnim potrebama.
NašPoliuretanski sjaj na bazi vodeje još jedan odličan izbor. Pruža izgled visokog sjaja i ima ugrađene napredne funkcije keširanja. Možete ga koristiti za keširanje različitih vrsta resursa s različitim vremenima keširanja, ovisno o vašim zahtjevima.
A ako tražite općenitije rješenje, našeProzirni lak na bazi vodeje odlična opcija. Nudi jasan, zaštitni sloj za resurse vaše web stranice i pomaže u postavljanju efikasnih zaglavlja za keširanje.
Kontaktirajte nas za kupovinu
Ako ste zainteresirani da saznate više o našim Varnish proizvodima ili vam je potrebna pomoć pri postavljanju HTTP zaglavlja keširanja u Varnish VCL, ne ustručavajte se kontaktirati. Imamo tim stručnjaka koji vas može voditi kroz proces i pomoći vam da izvučete maksimum iz vašeg podešavanja keširanja. Bilo da ste malo preduzeće sa jednostavnom veb lokacijom ili veliko preduzeće sa složenim potrebama za keširanjem, mi ćemo vas pokriti.
Reference
- Lak dokumentacija
- HTTP keširanje RFC (RFC 7234)
Dakle, evo ga! Podešavanje HTTP zaglavlja za keširanje u Varnish VCL-u u početku može izgledati malo složeno, ali uz odgovarajuće znanje i naše proizvode možete optimizirati performanse svoje web stranice i pružiti bolje iskustvo svojim korisnicima.
