Uvod u HTTP predmemoriju

Siguran sam da ste primijetili da kada prvi put otvorite web stranicu, treba se neko vrijeme učitati. Međutim, kad ga nakon nekog vremena ponovo otvorite, web mjesto se mnogo brže zatvara. Zamislite kada bi se web-lokacija svaki put isto vrijeme učitavala, kako će se pregledavati sporo pregledavanje. Pa, sve je to zahvaljujući sjajnoj ideji nazvanoj HTTP Caching. Pogledajmo što je, kako funkcionira i kako se Internet preglednik brže doživljava.

Što je HTTP predmemoriranje?

HTTP keširanje je ideja pohrane nekih često ili često korištenih podataka na nekom mjestu kojemu je brz pristup. S tim u vezi postoji vrlo dobra šansa da se najpotrebnijim podacima pristupi mnogo brže jer računalo ne mora predaleko doći do njega.

U slučaju pretraživanja weba, predmemoriranje se smatra kada vaš web preglednik, kao što je Chrome, pohranjuje kopiju web stranice ili web-aplikacije u lokalnu pohranu. Jednom kada se web mjesto spremi u predmemoriju, web preglednik neće morati ponovo učitavati sve podatke s poslužitelja i to će brže pregledavanje pregledati.

Na primjer, kad se jednom preuzme CSS datoteka web stranice, preglednik ne mora je preuzeti za svaku stranicu sesije. Isto se može reći za mnoge JavaScript datoteke, slike (poput logotipa web stranice i ikone društvenih medija), pa čak i neki dinamični sadržaj. Predmemoriranje je omogućeno pomoću zaglavlja predmemorije.

Zaglavlja predmemorije na HTTP-u

HTTP Keširanje ima dva glavna zaglavlja predmemorije, prvo se naziva "Cache-Control", a drugo se zove "Expire". Pogledajmo oba:

Cache-Control

Cache-Control možete smatrati prekidačem za uključivanje predmemoriranja u korisničkom pregledniku. Nakon što se doda ovo zaglavlje, ono omogućuje keširanje za sve podržane web preglednike. Ako ovo zaglavlje ne postoji, nijedan preglednik neće zadržati predmemoriju sadržaja web stranice, čak i ako podržava keširanje.

Cache-kontrola ima dvije vrste postavki privatnosti, prva je Javna, a druga Privatna.

U slučaju Public, resursi mogu biti spremljeni u predmemoriju bilo kojeg posrednog proxyja, poput mreža za dostavu sadržaja (CDN).

Zaglavlje predmemoriranja s privatnim odgovorom reći će pregledniku da će se predmemoriranje obavljati samo za jednog korisnika, a ne za bilo koji posredni proxy.

Vrijednost "max-age" u zaglavlju Cache-Control postavlja vrijeme u kojem će sadržaj biti predmemorija. Ovo je vrijeme u sekundi.

Cache-Control:public, max-age=31536000

istječe

Zaglavlje Expires koristi se kad je u kodu prisutna Cache-Control. Ovo je jednostavno zaglavlje HTTP Keša koje postavlja datum od kojeg se bilo koji resurs predmemorije smatra nevažećim. Nakon što istekne predmemorija i korisnik učita web mjesto, web preglednik će jednostavno još jednom zatražiti sav sadržaj stranice.

Uvjetni zahtjevi

Iznad zaglavlja jednostavno govore pregledniku kada treba preuzeti podatke s web-poslužitelja. S druge strane, uvjetni zahtjevi kažu pregledniku kako da ga preuzme. Uvjetni zahtjevi govore pregledniku kako može pitati poslužitelja je li kopija podataka u predmemoriji zastarjela.

U tom procesu preglednik šalje neke podatke o resursima koje je spremio u memoriju i nakon čitanja tih podataka poslužitelj odlučuje jesu li podaci zastarjeli ili ne.

Zahtjevi temeljeni na vremenu

U vremenski utemeljenim zahtjevima provjerava se je li zatraženi resurs promijenjen na poslužitelju ili ne. Ako je spremljena kopija u pregledniku najnovija, poslužitelj će vratiti kod 304.

Da biste postavili uvjetni zahtjev na vremensku osnovu, možete upotrijebiti "Zadnja izmjena" u zaglavlju odgovora.

Cache-Control:public, max-age=25998579
Last-Modified: Fri, 08 Jul 2018 15:25:00 GMT

Sadržaj-Based

U zahtjevima temeljenim na sadržaju provjerava se MD5 Hash (ili bilo koja druga održiva opcija) za obje, poslužiteljske i keširane kopije. Ovo govori jesu li podaci isti ili ne, u slučaju da su podaci različiti, kontrolni zbroj MD5 neće se podudarati i poslužitelj će poslati novu kopiju resursa.

To se vrši putem „ETag” u zaglavlju. Vrijednost toga je probavljanje resursa.

Cache-Control:public, max-age=25998579
ETag: "496d7131f15f0fff99ed5aae”

Vidljivost

Gotovo svi moderni preglednici uključuju neke alate povezane s razvojem koji omogućuju provjeru resursa, izvornog koda i drugih aspekata web stranice. Među njima možete pronaći alat za prikaz zaglavlja vraćenih bilo kojom aplikacijom.

Na pregledniku Google Chrome da biste vidjeli ove zaglavlja, desnom tipkom miša kliknite bilo koje prazno područje web stranice i kliknite na "Ispiti" ili pritisnite CTRL + SHIFT + I da otvorite DevTools. U ovom alatu kliknite karticu Mreža i pritisnite CRTL + R za ponovno učitavanje da biste vidjeli sva zaglavlja stranice.

Upotreba slučajeva u HTTP keširanju

Ispod su neki slučajevi upotrebe HTTP keširanja koji su sljedeći:

Za statičku imovinu

Za statička sredstva stranice kao što su slike, datoteke JS i bilo koje CSS datoteke, možete se odlučiti za agresivno spremanje sadržaja. Ako ne morate učitati te datoteke, rezultirat će impresivnim poboljšanjem performansi. U ovom slučaju upotrebite zaglavlje predmemoriranja predmemorijom čija je vrijednost max-age veća od mjesec dana ili čak godinu dana.

Cache-Control:public; max-age=31536000

Za dinamičke sadržaje

U slučaju dinamičnog sadržaja stranice, morat ćete sami razmisliti koje bi datoteke pregledavale u keš memoriju i koliko dugo. U slučaju da se sadržaj često mijenja, morat ćete biti sigurni da vremensko trajanje koje odaberete za predmemoriranje neće uzrokovati korisniku nikakav problem.

Predavanje privatnih sadržaja

Kao što smo raspravljali u odjeljku Cache-Control, u slučaju da je sadržaj stranice privatne prirode, možete spriječiti spremanje posredničkih proxyja poput CDN-a dodavanjem "Cache-Control: private" u zaglavlju.

Drugi sigurniji pristup je da uopće ne spremate privatni sadržaj.

Uvođenje HTTP predmemorije

Sada kada znate što je HTTP predmemorija i kako funkcionira, pogledajmo kako to možete implementirati na svoju web stranicu. Implementacija HTTP keširanja malo je različita za različite vrste poslužitelja. U našem slučaju, pogledajmo implementaciju predmemoriranja putem .htaccess datoteke.

Da biste omogućili predmemoriranje na web mjestu, na primjer, možete dodati zaglavlja u .htaccess datoteku na vašem poslužitelju:

FilesMatch "\.(ico|pdf|flv|jpg.webp|jpeg.webp|png|gif|js|css|swf)$"
Header set Cache-Control "max-age=31536000, public"
/FilesMatch

Navedeno će spremiti sve podatke u, pdf, flv, jpg.webp i ostale spomenute formate spomenute u „File Match“ u trajanju od jedne godine.

Zaključak

HTTP keširanje jedan je od najvažnijih trikova koji pregledavanje web stranice čine bržim iskustvom za posjetitelje, a sada kada možete vidjeti kako to funkcionira, možete je implementirati na svoje web stranice i web-aplikacije kako biste ih učinili bržim za svoje korisnike i za uštedu propusnosti vašeg poslužitelja.

Preporučeni članci

Ovo je vodič za HTTP predmemoriranje. Ovdje smo razgovarali o implementaciji, Uvjetni zahtjevi, zaglavlje predmemorije i slučajevi uporabe HTTP-a. Možete i proći naše druge predložene članke da biste saznali više -

  1. Saznajte što je HTML
  2. Kako instalirati Github?
  3. Što je MapReduce u Hadoopu?
  4. Vodič za naredbe za naredbe čvorova
  5. HTTP kolačići | sigurnosti

Kategorija: