Kako postaviti zaglavlja HTTP predmemoriranja u Varnish VCL?

Dec 08, 2025

Ostavite poruku

Frank Miller
Frank Miller
Frank je nadzornik proizvodnje u tvornici. S više od 10 godina iskustva u proizvodnji, on je iskusan u procesu proizvodnje kemikalija s vodenim smolama. Njegovo učinkovito upravljanje osigurava stabilnu proizvodnju i visoku kvalitetnu proizvodnju tvrtke.

Bok tamo! Kao dobavljač Varnisha, iz prve sam ruke vidio kako postavljanje HTTP zaglavlja za predmemoriju u Varnish VCL može promijeniti igru ​​za izvedbu web stranice. U ovom blogu, provest ću vas kroz proces korak po korak.

Prvo, shvatimo zašto su zaglavlja HTTP predmemoriranja tako važna. Kada korisnik posjeti web stranicu, preglednik od poslužitelja zahtijeva resurse kao što su HTML, CSS, JavaScript i slike. Bez odgovarajućeg predmemoriranja, poslužitelj mora obraditi ove zahtjeve svaki put, što može usporiti web mjesto, posebno tijekom razdoblja velikog prometa. HTTP zaglavlja za predmemoriju govore pregledniku i drugim posredničkim predmemorijama (kao što je Varnish) koliko dugo mogu pohraniti određeni resurs i ponovno ga koristiti bez vraćanja na poslužitelj.

2 Grossy Clear Varnish2 Leather Lacquer Coating(001)

Osnove Varnish VCL

Varnish Configuration Language (VCL) koristi se za kontrolu ponašanja Varnish-a. To je poput skupa pravila koje Varnish slijedi kada obrađuje zahtjeve i odgovore. Postoji nekoliko ključnih potprograma u VCL-u na koje ćemo se usredotočiti za postavljanje zaglavlja predmemoriranja:vcl_recv,vcl_pozadinski_odgovor, ivcl_isporuka.

vcl_recv

Thevcl_recvpodrutina se poziva kada Varnish primi zahtjev od klijenta (obično preglednika). Ovo je odlično mjesto za donošenje odluka o tome hoće li se zahtjev spremiti u predmemoriju ili ne. Na primjer, možda biste željeli izuzeti određene vrste zahtjeva, poput onih za dinamički sadržaj koji se često mijenja.

sub vcl_recv { # Nemoj keširati POST zahtjeve if (req.method == "POST") { return (pass); } # Ovdje možete dodati više uvjeta na temelju URL uzoraka if (req.url ~ "^/admin/") { return (pass); }}

U ovom kodu govorimo Varnishu da ne sprema POST zahtjeve jer oni obično uključuju slanje obrasca i vjerojatno će biti dinamički. Također isključujemo zahtjeve koji počinju s/administrator/jer su vjerojatno za administrativno područje web-mjesta koje ima dinamički sadržaj.

vcl_pozadinski_odgovor

Thevcl_pozadinski_odgovorpodrutina se poziva kada Varnish primi odgovor od pozadinskog poslužitelja. Ovdje možemo postaviti ili modificirati zaglavlja za predmemoriju.

sub vcl_backend_response { # Postavite zadano vrijeme predmemorije za sve odgovore set beresp.ttl = 3600s; # Možete postaviti različita vremena predmemorije ovisno o vrsti sadržaja if (beresp.http.Content - Type ~ "^text/html") { set beresp.ttl = 1800s; } # Dodavanje prilagođene predmemorije - set kontrolnih zaglavlja beresp.http.Cache - Control = "javno, max - starost=3600"; }

Ovdje postavljamo zadano vrijeme do života (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đer dodajemo aPredmemorija - Kontrolazaglavlje, koje je standardno HTTP zaglavlje koje pregledniku i drugim predmemorijama govori kako da rukuju resursom.

vcl_isporuka

Thevcl_isporukapotprogram se poziva neposredno prije nego što Varnish pošalje odgovor klijentu. Ovo možete koristiti za dodavanje ili izmjenu zaglavlja koja će klijent vidjeti.

sub vcl_deliver { # Dodavanje prilagođenog zaglavlja za označavanje da je odgovor predmemoriran od strane Varnish set resp.http.X - Cached - By = "Varnish"; }

U ovom primjeru dodajemo prilagođeno zaglavljeX - Spremljeno u privremenu memoriju - Autorkako bi klijent znao da je Varnish spremio odgovor u predmemoriju.

Napredni scenariji predmemoriranja

Pogledajmo neke naprednije scenarije za postavljanje zaglavlja za predmemoriju.

Probijanje predmemorije

Ponekad želite natjerati preglednik da dohvati novu verziju resursa, čak i ako je još unutar vremena predmemorije. To možete učiniti tako da URL-u resursa dodate broj verzije ili hash. U VCL-u to možete riješiti uklanjanjem broja verzije iz URL-a prije nego što ga proslijedite pozadini.

sub vcl_recv { if (req.url ~ "\?v=[0 - 9]+$") { postavi req.url = regsub(req.url, "\?v=[0 - 9]+$", ""); }}

Ovaj kod uklanja?v=123dio URL-a, tako da Varnish može spremiti resurs u predmemoriju na temelju izvornog URL-a bez broja verzije.

Uvjetno predmemoriranje

Možda ćete željeti spremiti resurs u predmemoriju samo ako su ispunjeni određeni uvjeti. Na primjer, možete spremiti stranicu u predmemoriju samo ako ima određeni HTTP statusni kod.

sub vcl_backend_response { if (beresp.status == 200) { set beresp.ttl = 3600s; postavite beresp.http.Cache - Control = "javno, max - dob=3600"; } else { set beresp.ttl = 0s; postavi beresp.http.Cache - Control = "no - cache"; }}

Ovdje spremamo uspješne odgovore (kod statusa 200) na sat vremena, ali ne spremamo druge odgovore.

Korištenje naših proizvoda za lakiranje

U našoj tvrtki nudimo niz proizvoda povezanih s Varnishom koji mogu učiniti postavljanje i upravljanje zaglavljima HTTP predmemoriranja još lakšim. Na primjer, našMat završni sloj na bazi vodeje izvrsna opcija za web stranice koje žele glatku, mat završnicu, a istovremeno imaju koristi od optimiziranog predmemoriranja. Dolazi s unaprijed konfiguriranim VCL predlošcima koje možete jednostavno prilagoditi svojim specifičnim potrebama.

NašePoliuretanski sjaj na bazi vodeje još jedan odličan izbor. Pruža izgled visokog sjaja i ima ugrađene napredne značajke predmemoriranja. Možete ga koristiti za predmemoriranje različitih vrsta resursa s različitim vremenima predmemoriranja, ovisno o vašim zahtjevima.

A ako tražite općenitije rješenje namjene, našeBezbojni lak na bazi vodeje super opcija. Nudi jasan, zaštitni sloj za resurse vaše web stranice i pomaže u postavljanju učinkovitih zaglavlja za predmemoriju.

Kontaktirajte nas za kupnju

Ako ste zainteresirani saznati više o našim Varnish proizvodima ili trebate pomoć pri postavljanju HTTP zaglavlja za predmemoriju u Varnish VCL, slobodno nam se obratite. Imamo tim stručnjaka koji vas može voditi kroz proces i pomoći vam da na najbolji način iskoristite svoje postavke predmemoriranja. Bilo da ste mala tvrtka s jednostavnim web mjestom ili velika tvrtka sa složenim potrebama predmemoriranja, mi ćemo vas pokriti.

Reference

  • Dokumentacija laka
  • HTTP predmemoriranje RFC (RFC 7234)

Dakle, eto ga! Postavljanje zaglavlja za predmemoriju HTTP-a u Varnish VCL-u može se isprva činiti malo složenim, ali s pravim znanjem i našim proizvodima možete optimizirati izvedbu svoje web-lokacije i pružiti bolje iskustvo svojim korisnicima.

Pošaljite upit
Kontaktirajte nasAko imate bilo kakvog pitanja

Možete nas kontaktirati putem telefona, e -pošte ili internetskog obrasca u nastavku. Naš specijalist će vas uskoro kontaktirati.

Kontaktirajte odmah!