Kas yra talpykloje saugomi duomenys? Ką reiškia išvalyti talpyklą ir ką ji veikia?

Pirma, kas yra talpykla?

Apskritai, talpykla (tariama „grynaisiais“) yra saugyklos rūšis. Saugyklą galite laikyti laikymo saugykla. Kariuomenėje tai būtų laikyti ginklus, maistą ir kitus reikmenis, reikalingus misijai vykdyti.

Kompiuterijoje šie „priedai“ vadinami ištekliais, kur ištekliai yra scenarijai, kodas ir dokumentų turinys. Pastarasis kartais konkrečiau vadinamas „turtu“, tokiu kaip tekstas, statiniai duomenys, laikmenos ir hipersaitai, bet čia aš naudosiu tik vieną terminą ištekliai .

Talpyklos ir kitų tipų saugyklų skirtumas

Pagrindinis talpyklos tikslas yra pagreitinti tinklalapio išteklių paiešką, sutrumpinant puslapio įkėlimo laiką. Kitas kritinis talpyklos aspektas yra užtikrinti, kad joje būtų palyginti nauji duomenys.

Šis straipsnis apims du paplitusius talpyklos metodus: naršyklės talpyklą ir turinio pristatymo tinklus (CDN).

Be talpyklų, žiniatinklio architektūrose veikia ir kitos saugyklos; dažnai jie skirti laikyti didžiulius duomenų kaupinius. Vis dėlto jie nėra sutelkti į paieškos rezultatus.

Pavyzdžiui, „Amazon Glacier“ yra duomenų saugykla, skirta pigiai saugoti duomenis, bet greitai jų negauti. Kita vertus, SQL duomenų bazė yra sukurta taip, kad būtų lanksti, atnaujinta ir greita, tačiau retai yra pigi ir paprastai ne tokia greita kaip talpykla.

Naršyklės talpykla: atminties talpykla

Atminties talpykla saugo išteklius vietoje kompiuteryje, kuriame veikia naršyklė. Kol naršyklė aktyvi, gauti ištekliai bus saugomi kompiuterio fizinėje atmintyje (RAM) ir galbūt kietajame diske.

Vėliau, kai tiksli patys ištekliai reikalingi, kai persvarstyti tinklalapį, naršyklė bus ištraukti tie iš vietoj talpyklos nuotolinio serverio. Kadangi talpykla saugoma vietoje, greitojoje atmintyje, šie ištekliai gaunami greičiau, o puslapis įkeliamas greičiau.

Svarbiausia yra išteklių paieškos greitis, tačiau taip pat būtina, kad ištekliai būtų švieži. Pasenęs šaltinis yra pasenęs ir galbūt nebegalioja.

Naršyklės užduotis yra nustatyti, kurie talpykloje esantys resursai yra pasenę, ir atkurti tuos, kurie yra. Kadangi tinklalapyje paprastai yra išteklių, gali būti, kad talpykloje yra pasenusių ir šviežių versijų derinys.

Kaip naršyklė žino, kas yra pasenusi talpykloje?

Atsakymas nėra paprastas, tačiau yra du pagrindiniai metodai: talpyklos pašalinimas ir HTTP antraštės laukai.

talpyklos sugadinimas

Italai

Talpyklos naikinimas yra serverio technika, užtikrinanti, kad naršyklė gauna tik naujus išteklius. Tai daro netiesiogiai.

Nors talpyklos talpinimas gali pasirodyti dramatiškas, jis tikrai nieko nepanaikina ir net neliečia to, kas jau yra talpykloje. Talpyklos naikinimas - tai pirminio šaltinio URI pakeitimas tokiu būdu, kad naršyklei atrodytų, jog šaltinis yra visiškai naujas. Kadangi jis atrodo naujas, jo nebus naršyklės talpykloje. Senoji talpykloje išsaugoto šaltinio versija vis tiek bus išsaugota talpykloje, tačiau galų gale ji nudžius ir mirs, prie jos niekada nebus galima daugiau prisijungti.

Tarkime, kad aš turiu tinklalapį, www.foobar.com/about.htmlkuriame apie foobar.com yra viskas, ką jūs kada nors norėtumėte žinoti. Apsilankius tame puslapyje, naršyklė talpina jį ir su juo susietus išteklius.

Vėliau foobar.com išperka korporacija „Quxbaz“, o apie puslapio turinį vyksta reikšmingi pokyčiai. Naršyklės talpykloje nebus to naujo turinio, tačiau ji vis tiek gali manyti, kad turimas turinys yra dabartinis, ir niekada nebandys jo atnaujinti.

Ką jūs, „Quxbaz“ tinklo administratorius, darote, kad visas naujas turinys būtų išstumtas?

Kadangi naršyklė remiasi URI, norėdama rasti elementus talpykloje, pasikeitus ištekliaus URI, naršyklė to niekada nematė, kol nenorėjo to serverio gauti.

Taigi, pakeisdama išteklių URI iš www.foobar.com/about.htmlį www.foobar.com/about2.html(arba į www.quxbaz.com/about.html), naršyklė neras jokių su tuo URI susijusių talpyklos išteklių ir atliks pilną atėmimą iš serverio. Ištekliai gali būti iš esmės tokie patys kaip originalai pagal senąjį URI, tačiau naršyklė to nežino.

Vis dėlto nereikia keisti puslapio pavadinimo. Nuo URI taip pat apima užklausos eilutę pagal apibrėžimą, galite pridėti versija parametrą URI: www.foobar.com/about.html?v=2hef9eb1.

Tokiu atveju versijos parametras v nustatomas naujai, nauja sugeneruota maišos reikšmė, kai tik pasikeičia turinys, arba ją paleidžia kitas procesas, pvz., Iš naujo paleidus serverį. Naršyklė mato, kad užklausos eilutė pasikeitė, ir kadangi užklausos eilutės gali paveikti tai, kas bus grąžinta, ji atims iš serverio atnaujintą šaltinį.

Nei viena iš šių metodų neveiks, jei prie senojo URI bus tiesiogiai pasiekiama iš žymės. Jei naršyklei nebus nurodyta pakartotinai patvirtinti URI pagal paskutinę talpykloje pateiktą užklausą (arba jei talpykloje esantis šaltinis pasibaigė), ji neatliks viso gavimo, kad atnaujintų talpyklą. Tai atveda prie kitos temos.

HTTP antraštės laukai

Kiekvienoje išteklių užklausoje pateikiama meta informacija, vadinama antrašte. Ir atvirkščiai, kiekviename atsakyme taip pat yra susieta antraštės informacija.

Kai kuriais atvejais naršyklė mato atsakymo antraštės reikšmes ir keičia atitinkamas reikšmes vėlesnėse užklausų antraštėse. Tarp šių antraštės reikšmių yra tos, kurios turi įtakos tai, kaip naršyklėje atliekamas išteklių talpinimas.

HEAD prašymai ir sąlyginiai prašymai

HEAD užklausa yra tarsi sutrumpinta GET arba POST užklausa. Užuot prašiusi viso ištekliaus, HEAD užklausa prašo tik antraštės laukų, kurie kitu atveju būtų grąžinti pateikus visą užklausą.

Ištekliaus antraštė paprastai bus daug mažesnė (pagal bendrą baitų skaičių) nei su ja susieti išteklių duomenys (atsakymo „kūnas“). Antraštės informacija yra pakankamai informatyvi, kad naršyklė galėtų nustatyti jos talpykloje esančio ištekliaus šviežumą.

HEAD užklausos dažnai naudojamos serverio ištekliaus pagrįstumui patikrinti (tai yra, ar išteklius vis dar egzistuoja, ir jei taip, ar jis buvo atnaujintas nuo tada, kai naršyklė paskutinį kartą jį pasiekė?). Naršyklė naudos tai, kas yra jos talpykloje, jei HEAD užklausoje nurodoma, kad šaltinis yra tinkamas, kitaip ji atliks visą GET arba POST užklausą ir atnaujins savo talpyklą tuo, kas grąžinama.

Esant sąlyginei užklausai, naršyklė antraštėje siunčia laukus, apibūdinančius jos talpykloje esančio ištekliaus šviežumą. Šį kartą serveris nustato, ar naršyklės talpykla vis dar yra nauja.

Jei taip, serveris pateikia 304 atsakymą, kuriame pateikiama tik ištekliaus antraštės informacija, o ne ištekliaus turinys (duomenys). Jei nustatoma, kad naršyklės talpykla yra pasenusi, serveris grąžins visą 200 Gerų atsakymą.

Šis mechanizmas yra greitesnis nei naudojant HEAD užklausas, nes tai pašalina galimybę pateikti ne vieną, o dvi užklausas.

Tai supaprastina tai, kas gali būti gana sudėtingas procesas. Talpykloje yra daugybė tiksliųjų veiksmų, tačiau visa tai valdoma per antraštės laukus, iš kurių svarbiausias yra talpyklos valdymas.

Talpyklos valdymas

Atsakydamas į užklausą, serveris nusiųs naršyklės antraštės laukus, nurodydamas, koks elgesys turėtų būti pritaikytas talpykloje. Jei įkeliu puslapį adresu //en.wikipedia.org/wiki/Uniform_Resource_Identifier, atsakymo antraštės įraše yra:

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

privatus reiškia, kad tik naršyklė turėtų išsaugoti dokumento turinį.

s-maxage ir max-age nustatomi į 0 . „ S-maxage“ vertė yra tarpiniams serveriams su talpyklomis, o „ max-age “ skirta naršyklei. Iš nustatymo poveikis MAX-amžių vien tai, kad iš talpyklos išteklių baigiasi iš karto, tačiau jis vis dar gali būti naudojami (nors pasenusi) per puslapio perkrovimai, o pačiame naršyklės sesijos metu.

Pasenęs šaltinis gali būti pakartotinis patvirtinimas naudojant HEAD užklausą, po kurios gali būti GET arba POST užklausa, atsižvelgiant į atsakymą. „ Must-revalidate“ direktyva nurodo naršyklei dar kartą patvirtinti talpykloje esantį šaltinį, jei jis pasenęs.

Kadangi šiuo atveju maksimalus amžius nustatytas į 0 , talpykloje išsaugotas šaltinis iškart genda. Dviejų direktyvų derinys yra lygiavertis vienai direktyvai be talpyklos .

Šie du nustatymai užtikrina, kad naršyklė visada pakartotinai patvirtina talpykloje esantį šaltinį, nesvarbu, ar jis vis dar yra toje pačioje sesijoje, ar ne.

Talpyklos valdymo direktyvos yra labai plačios ir kartais painios - jos yra savaime suprantama tema. Išsamų dokumentais pagrįstą direktyvų sąrašą galite rasti čia.

El. Žyma

Tai yra raktas, kurį serveris siunčia, o naršyklė pasilieka iki kitos užklausos. Tai naudojama tik tada, kai naršyklė žino, kad pasibaigė išteklių talpyklos tarnavimo laikas.

El. Žymos yra serverio sugeneruotos maišos reikšmės, kurios dažnai naudoja fizinį šaltinio failo pavadinimą ir paskutinį pakeitimo datą serveryje kaip pradinę informaciją. Atnaujinus išteklių failą, pakeista pakeista data, o užklausos atsakymo antraštėje sugeneruojama ir išsiunčiama nauja maišos vertė.

Kitos antraštės žymos, turinčios įtakos talpyklai

Antraštės žymos nebegalioja, o paskutinį kartą modifikuotos , bet pasenusios, tačiau dauguma serverių jas vis tiek siunčia, kad būtų suderinama su senesnėmis naršyklėmis. Pavyzdys:

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

Čia galiojimo laikas nustatomas kaip nulinė data (istoriškai, iš UNIX operacinės sistemos). Tai rodo, kad šaltinis pasibaigia iškart, kaip ir maks. Amžius = 0 . Paskutinis modifikavimas nurodo naršyklei, kada buvo atliktas paskutinis ištekliaus atnaujinimas, ir tada ji gali naudoti nuspręsdama, ar ji turėtų ją atnaujinti, o ne naudoti talpyklos vertę.

Priverčiama atnaujinti talpyklą iš naršyklės

Kas yra sunkus perkrovimas?

Sunkus perkėlimas priverčia atnaujinti visus puslapio išteklius, nesvarbu, ar jie yra turinys, scenarijai, stiliaus lapai ar medija. Beveik viskas, tiesa?

Na, kai kurie šaltiniai gali būti aiškiai neįtraukti į puslapį. Vietoj to, juos galima gauti dinamiškai, paprastai po to, kai viskas, kas yra aišku, yra įkrauta.

Naršyklė iš anksto nežino, kad taip atsitiks, o kai tai įvyks, vėlesnėse užklausose (kurias paprastai inicijuoja scenarijai) vis tiek bus naudojamos tų išteklių talpyklos, jei tokios yra.

Kas yra aiški talpykla ir sunkus perkėlimas?

Ši operacija išvalo visą naršyklės talpyklą, kuri turi tą patį poveikį kaip ir sunkus perkėlimas, tačiau papildomai sukelia ir dinamiškai įkeltų išteklių paiešką - juk talpykloje nėra nieko, todėl nėra pasirinkimo!

Turinio pristatymo tinklai: geografinė talpykla

CDN yra ne tik talpykla, bet talpykla yra vienas iš jos darbų. CDN saugo duomenis geografiškai paskirstytose vietose, kad būtų sumažintas pirmyn ir atgal geografiškai vietinės naršyklės laikas.

Naršyklės užklausos nukreipiamos į netoliese esantį CDN, taigi sutrumpėja fizinio atstumo atsakymo duomenys. CDN taip pat gali apdoroti didelius srautus ir užtikrinti apsaugą nuo kai kurių rūšių atakų.

CDN savo išteklius gauna per interneto mainų tašką (IXP), mazgus, kurie yra interneto pagrindo dalis (didžiosiomis raidėmis). Norėdami nustatyti užklausų nukreipimą, eikite į CDN, o ne pagrindinį serverį, reikia atlikti veiksmus. Kitas žingsnis - įsitikinkite, kad CDN turi dabartinį jūsų svetainės turinį.

Senais laikais dauguma CDN palaikė „push“ metodą: svetainė į CDN stebulę nukreipė naują turinį, kuris tada bus paskirstytas geografiškai išsklaidytiems mazgams.

Šiais laikais dauguma CDN naudoja aukščiau aprašytus (ar panašius) talpyklos protokolus 1) atsisiųsdami naujus išteklius ir 2) atnaujindami esamus. Naršyklė vis dar turi savo talpyklą ir niekas nepasikeičia. Viskas, ką daro CDN, yra greitesnis tų naujų išteklių perkėlimas.