Mis on vahemälu andmed? Mida tähendab vahemälu tühjendamine ja mida see teeb?

Esiteks, mis on vahemälu?

Üldiselt on vahemälu (hääldatakse sularahana) teatud tüüpi hoidla. Hoidlast võib mõelda kui hoidlat. Sõjaväes oleks see missiooni jätkamiseks vajalike relvade, toidu ja muude varude hoidmine.

Arvutiteaduses nimetatakse neid "tarvikuid" ressurssideks, kus ressursideks on skriptid, kood ja dokumendi sisu. Viimast nimetatakse mõnikord konkreetsemalt "varadeks" nagu tekst, staatilised andmed, meedium ja hüperlingid, kuid siin kasutan lihtsalt ühte mõistet ressursid .

Vahemälu ja muud tüüpi hoidlate eristamine

Vahemälu peamine eesmärk on kiirendada veebilehtede ressursside otsimist, lühendades lehe laadimisaega. Teine vahemälu kriitiline aspekt on tagada, et see sisaldab suhteliselt värskeid andmeid.

See artikkel käsitleb kahte levinud vahemällu salvestamise meetodit: brauseri vahemällu salvestamist ja sisuteenuse edastamise võrke (CDN).

Lisaks vahemäludele tulevad veebiarhitektuurides mängu ka teised hoidlad; sageli on need mõeldud suurte andmehulkade mahutamiseks. Need pole siiski nii keskendunud otsingutulemustele.

Näiteks on Amazon Glacier andmekogu, mis on mõeldud andmete odavaks salvestamiseks, kuid mitte kiireks allalaadimiseks. SQL-i andmebaas seevastu on loodud paindlikuks, ajakohaseks ja kiireks, kuid on harva odav ja tavaliselt mitte nii kiire kui vahemälu.

Brauseri vahemälu: mälu vahemälu

Mälu vahemälu salvestab ressursse kohapeal arvutis, kus brauser töötab. Kui brauser on aktiivne, salvestatakse leitud ressursid arvuti füüsilisse mällu (RAM) ja võib-olla ka kõvakettale.

Hiljem, kui veebisaidi uuesti külastamisel on vaja täpselt samu ressursse, tõmbab brauser kaugserveri asemel need vahemälust. Kuna vahemälu on salvestatud lokaalselt, saab kiirmällu need ressursid kiiremini ja leht laaditakse kiiremini.

Ressursside otsimise kiirus on oluline, aga ka ressursside värske vajadus. Vananenud ressurss on aegunud ja ei pruugi enam kehtida.

Brauseri ülesanne on tuvastada vahemälus olevad ressursid ja taastada need, mis on. Kuna veebisaidil on tavaliselt ressursse, on vahemälus tavaliselt vananenud ja värskete versioonide segu.

Kuidas saab brauser teada, mis on vahemälus seisma jäänud?

Vastus pole lihtne, kuid on kaks peamist lähenemist: vahemälu eemaldamine ja HTTP päise väljad.

vahemälu katkestamine

Itaallased

Vahemälu eemaldamine on serveripoolne tehnika, mis tagab, et brauser tooks ainult värskeid ressursse. Ta teeb seda kaudselt.

Kuigi vahemälu katkestamine võib tunduda dramaatiline, ei riku see tegelikult midagi ega puuduta isegi seda, mis on juba brauseris vahemällu salvestatud. Vahemälu eemaldamine muudab ainult algse ressursi URI-d nii, et brauserile näib, et ressurss on täiesti uus. Kuna see näeb välja uus, ei ole seda brauseri vahemälus. Vahemällu salvestatud ressursi vana versioon on endiselt vahemälus, kuid lõpuks närbub ja sureb, et sellele ei saaks enam kunagi juurde pääseda.

Oletame, et mul on veebileht, www.foobar.com/about.htmlkus on kõik foobar.com kohta öeldud, mida te kunagi teada soovite. Kui olete seda lehte külastanud, salvestab brauser selle ja sellega seotud ressursid vahemällu.

Hiljem ostab korporatsioon Quxbaz välja foobar.com ning lehe umbes sisu muutub oluliselt. Brauseri vahemälul seda uut sisu pole, kuid siiski võib see uskuda, et tema sisu on praegune ja ei püüa seda kunagi uuesti laadida.

Mida teie, Quxbazi veebiadministraator, teete, et kogu uus sisu välja tõrjutakse?

Kuna brauser tugineb vahemälust üksuste leidmiseks URI-le, siis kui ressursi URI muutub, pole brauser seda kunagi varem näinud, enne kui see ressurss serverist tooma läheb.

Seega, kui muudate ressursi URI-d www.foobar.com/about.htmlasendisse www.foobar.com/about2.html(või www.quxbaz.com/about.html), ei leia brauser selle URI-ga seotud vahemäluressurssi ja teeb serverist täieliku toomise. Ressurss võib olla sama, mis vana URI all originaal, kuid brauser ei tea seda.

Te ei pea siiski lehe nime muutma. Kuna URI ka Päringustring definitsiooni, võite lisada versioon parameetri URI: www.foobar.com/about.html?v=2hef9eb1.

Sellisel juhul määratakse versiooni parameetriks v uueks uus loodud räsiväärtus alati, kui sisu muutub või käivitab mõni muu protsess, näiteks serveri taaskäivitamine. Brauser näeb, et päringustring on muutunud, ja kuna päringustringid võivad mõjutada tagastatavat, tõmbab see serverist ajakohase ressursi.

Kumbki neist tehnikatest ei toimi, kui vanale URI-le pääseb otse juurde järjehoidjast. Kui brauseril pole käsku viimase vahemällu salvestatud päringu URI uuesti kinnitada (või kui vahemälu on aegunud), ei tee see vahemälu värskendamiseks täielikku toomist. See viib meid järgmise teema juurde.

HTTP päise väljad

Igale ressursitaotlusele on lisatud metateavet, mida nimetatakse päiseks. Ja vastupidi, iga vastusega on seotud ka päise teave.

Mõnel juhul näeb brauser vastuse päise väärtusi ja muudab vastavaid väärtusi järgmistes päringute päistes. Nende päiseväärtuste hulgas on need, mis mõjutavad ressursside vahemällu salvestamist brauseris.

HEAD taotlused ja tingimuslikud taotlused

HEAD-päring on nagu kärbitud GET või POST-päring. Kogu ressursi taotlemise asemel taotleb HEAD-päring ainult päisevälju, mis muidu tagastatakse täieliku päringu korral.

Ressursi päis on üldjuhul palju väiksem (baitide koguarvuna) kui sellega seotud ressursiandmed (vastuse "keha"). Päise teave on piisavalt informatiivne, et brauser saaks määrata vahemälus oleva ressursi värskuse.

HEAD-päringuid kasutatakse sageli serveriressursi kehtivuse kontrollimiseks (see tähendab, kas ressurss on endiselt olemas ja kas jah, siis kas seda on värskendatud alates brauseri viimasest juurdepääsust?). Brauser kasutab vahemälus olevat, kui HEAD-päring näitab, et ressurss on kehtiv, vastasel juhul täidab see täieliku GET- või POST-päringu ja värskendab oma vahemälu tagastatuga.

Tingimusliku päringu korral saadab brauser päises väljad, mis kirjeldavad tema vahemällu salvestatud ressursi värskust. Seekord teeb server kindlaks, kas brauseri vahemälu on endiselt värske.

Kui see on nii, tagastab server 304 vastuse, milles on ainult ressursi päise teave ja ressursi keha (andmed). Kui tuvastatakse, et brauseri vahemälu on aegunud, tagastab server 200 OK vastuse.

See mehhanism on kiirem kui HEAD-päringute kasutamine, kuna see välistab võimaluse, et ühe taotluse asemel tuleb esitada kaks taotlust.

Eeltoodu lihtsustab seda, mis võib olla üsna keeruline protsess. Vahemälu sisaldab palju peenhäälestust, kuid seda kõike juhitakse päiseväljade kaudu, millest kõige olulisem on vahemälu-kontroll.

Vahemälu juhtimine

Päringule vastamisel saadab server brauserile päiseväljad, mis näitavad, milline käitumine peaks vahemällu salvestamisel kohanema. Kui laadin lehe aadressil //en.wikipedia.org/wiki/Uniform_Resource_Identifier, sisaldab vastus päise kirjes järgmist:

cache-control: private, s-maxage=0, max-age=0, must-revalidate 

privaatne tähendab, et ainult brauser peaks dokumendi sisu vahemällu salvestama.

s-maxage ja max-vanus on seatud 0-le . S-maxage väärtus on proxy serverite vahemälu, samas maxage on mõeldud brauser. Ainuüksi vanuse maksimaalse vanuse määramise tagajärg on see, et vahemällu salvestatud ressurss aegub kohe, kuid seda võidakse siiski lehe uuesti laadimisel samal brauseriseansil kasutada (isegi kui see on aegunud).

Vananenud ressurss võib olla HEAD-päringu kaudu pikendamine, millele võib järgneda GET- või POST-taotlus, sõltuvalt vastusest. Lugematutele revalidate direktiiv käsib brauseri valideerida puhverdatud ressurss, kui see on aegunud.

Kuna maksimaalseks vanuseks on antud juhul seatud 0 , on vahemällu salvestatud ressurss pärast kättesaamist kohe vananenud. Kahe direktiivi kombinatsioon on samaväärne ühtse direktiiviga vahemälu .

Need kaks seadet tagavad, et brauser kinnitab vahemälus oleva ressursi alati uuesti, olgu see siis samal seansil või mitte.

Vahemälu kontrollimise direktiivid on väga ulatuslikud ja kohati segased - need on omaette teema. Täieliku dokumenteeritud direktiivide loetelu leiate siit.

E-silt

See on luba, mille server saadab ja brauser säilitab järgmise taotluseni. Seda kasutatakse ainult siis, kui brauser teab, et ressursi vahemälu eluiga on lõppenud.

E-sildid on serveri loodud räsiväärtused, mis kasutavad lähtematerjalina sageli ressursi füüsilist failinime ja serveris viimati muudetud kuupäeva. Kui ressursifaili värskendatakse, muutub muudetud kuupäev ning päringu vastuse päises genereeritakse ja saadetakse uus räsiväärtus.

Muud vahemälu mõjutavad päisesildid

Päisemärgendid aeguvad ja viimati muudetud on vananenud, kuid siiski saadavad enamik servereid vanemate brauseritega tagurpidi ühildumiseks. Näide:

expires: Thu, 01 Jan 1970 00:00:00 GMT last-modified: Sun, 01 Mar 2020 17:59:02 GMT 

Siin määratakse aegumise aeg nullkuupäevaks (ajalooliselt UNIX-i operatsioonisüsteemist). See näitab, et ressurss aegub kohe, nagu ka max-age = 0 . Viimati muudetud ütleb brauserile, millal ressursile viimane värskendus tehti, mida ta saab seejärel kasutada, et otsustada, kas ta peaks selle vahemälu väärtuse asemel uuesti laadima.

Vahemälu värskendamise sundimine brauserist

Mis on raske uuesti laadida?

Raske uuesti laadimine sunnib lehel taastama kõik ressursid, olgu need siis sisu, skriptid, stiililehed või meedium. Päris kõik, eks?

Noh, mõned ressursid ei pruugi olla selgesõnaliselt lehele lisatud. Selle asemel saab neid tuua dünaamiliselt, tavaliselt pärast seda, kui kõik selgesõnaline on laaditud.

Brauser ei tea enne, kui see juhtub, ja kui see juhtub, kasutavad hilisemad taotlused (tavaliselt skriptide algatatud) siiski nende ressursside vahemällu salvestatud koopiaid, kui need on saadaval.

Mis on vahemälu ja kõva uuesti laadimine?

See toiming tühjendab kogu brauseri vahemälu, millel on sama mõju kui raskel uuesti laadimisel, kuid lisaks sellele tuuakse ka dünaamiliselt laaditud ressursse - lõppude lõpuks pole vahemälus midagi, seega pole valikut!

Sisuvõrgud: geograafiline vahemälu

CDN on midagi enamat kui lihtsalt vahemälu, kuid vahemällu salvestamine on üks selle tööülesandeid. CDN salvestab andmeid geograafiliselt jaotatud kohtadesse, nii et edasi-tagasi sõiduaeg geograafiliselt kohalikku brauserisse ja tagasi väheneb.

Brauseri taotlused suunatakse lähedal asuvasse CDN-i, lühendades seeläbi füüsilise kauguse reageerimise andmeid. CDN-id suudavad hallata ka suurt liiklust ja pakuvad turvalisust teatud tüüpi rünnakute eest.

CDN saab oma ressursid Interneti-vahetuspunkti (IXP) kaudu, sõlmede kaudu, mis on osa Interneti selgroost (suurtähtedega). Taotluste marsruutimise seadistamiseks tuleb hostiserveri asemel minna CDN-i. Järgmine samm on veenduda, et CDN-il on teie veebisaidi praegune sisu.

Vanasti toetas enamik CDN-e tõukemeetodit: veebisait lükkas uue sisu CDN-jaoturisse, mis seejärel levitati geograafiliselt hajutatud sõlmedesse.

Tänapäeval kasutab enamik CDN-sid ülalkirjeldatud vahemäluprotokolle (või sarnaseid) 1) uute ressursside allalaadimiseks ja 2) olemasolevate värskendamiseks. Brauseril on endiselt vahemälu ja ükski neist ei muutu. CDN teeb vaid uute ressursside ülekandmise kiiremaks.