Udhëzues

Çfarë është cache-imi? Udhëzues i thjeshtë për ndërtuesit e aplikacioneve

Cache-imi do të thotë të mbash një kopje gati të diçkaje që ishte e ngadaltë ose e shtrenjtë për t'u marrë, në mënyrë që kërkesa tjetër për të të mund të përgjigjet shpejt nga ajo kopje. Kopja e ruajtur quhet cache. Shfletuesi juaj ruan imazhe në cache, që një sajt të ngarkohet më shpejt në vizitën e dytë; një server ruan në cache rezultatin e një kërkese të ngadaltë në bazën e të dhënave, që të mos e ekzekutojë për çdo vizitor.

Cache-imi i bën aplikacionet më të shpejta dhe më lirë për t'u drejtuar. Kompromisi i tij kryesor është se një kopje mund të vjetërohet.

Pse cache-imi ka rëndësi kur ndërtoni me AI

Do ta hasni cache-imin te aplikacionet e ndërtuara me AI në tri mënyra:

  • „E përditësova aplikacionin, por ende shoh versionin e vjetër.“ Ky është momenti më i shpeshtë i cache-imit, dhe zakonisht është i padëmshëm — shfletuesi juaj ose një CDN po shfaq një kopje të ruajtur.
  • Shpejtësia. Nëse një faqe është e ngadaltë sepse rillogarit të njëjtat numra për çdo vizitor, ruajtja e rezultatit në cache mund ta bëjë të duket e menjëhershme.
  • Kostoja. Shumë ndërtues me AI dhe hostues paguhen për llogaritjen, kohën e bazës së të dhënave dhe thirrjet API të jashtme. Nëse një mijë vizitorë nxisin të njëjtën kërkesë të shtrenjtë, cache-imi ju lejon ta paguani vetëm një herë.

Njohja e bazave ju lejon të kërkoni cache-im aty ku ndihmon, dhe ta dalloni kur është arsyeja pse diçka duket e gabuar.

Një analogji e përditshme

Mendoni për kuzhinën e një kafeneje të zënshme.

Çdo mëngjes, kuvendari mund ta bënte çdo kafe nga e para, me kokrra të bluara të freskëta, sapo porositet. Kjo është e ngadaltë. Në vend të kësaj, ai mban gati një tenxhere kafe me filtër mbi pllakën e nxehtë. Shumicën e klientëve i shërben një filxhan në sekonda — kjo është një cache hit. Kur tenxhere mbaron, dikush bën një të re — një cache miss.

Por kafeja që qëndron shumë kohë vjetërohet, kështu që kafeneja ka një rregull: hidh çdo tenxhere më të vjetër se 30 minuta. Ai rregull është koha e skadimit të cache-it. Askush nuk do ta mbante të njëjtën tenxhere gjithë ditën, dhe askush nuk do ta para-bënte porosinë e veçantë të dikujt me qumësht bajame dhe tre lugë sheqer — disa gjëra nuk duhet fare të ruhen në cache.

Ku jetojnë cache-et

Një ngarkim i vetëm faqeje mund të kalojë nëpër disa cache-e, nga më afër përdoruesit deri më larg:

CacheKu ndodhetÇfarë ruan zakonishtShembull
Cache i shfletuesitNë pajisjen e vizitoritImazhe, stil-skedarë, skripte, shkronjaLogoja juaj ngarkohet menjëherë në faqen e dytë
Cache i CDN-sëServerë në mbarë botën, afër vizitorëveSkedarë statikë dhe ndonjëherë faqe të tëraNjë vizitor në Tokio merr skedarët nga një server i afërt, jo nga origjina juaj
Cache i aplikacionitNë ose pranë serverit tuaj, shpesh në memorie ose RedisRezultatet e kërkesave të ngadalta ose të thirrjeve API të jashtmeKursi i sotëm i këmbimit, i marrë një herë në orë
Cache i bazës së të dhënaveBrenda bazës së të dhënaveTë dhëna të përdorura së fundmi dhe plane kërkesashRreshtat e popullarizuar qëndrojnë në memorie të shpejtë

Një CDN (rrjet shpërndarjeje përmbajtjeje) është në thelb një rrjet global cache-esh për skedarët e sajtit tuaj.

Si vendos një cache çfarë të mbajë

Çdo cache duhet t'u përgjigjet të njëjtave pyetje:

  • Çfarë mund të ruhet në cache? Të dhëna publike, të përbashkëta (një imazh produkti, një postim blogu) — po. Të dhëna private (faqja e llogarisë së një përdoruesi, mesazhet e tij) — asnjëherë në një cache të përbashkët.
  • Për sa kohë? Ky është TTL (time to live). Një logo mund të ruhet në cache për një vit; një nivel stoku për 30 sekonda.
  • Si përditësohet? Ose kopja skadon dhe merret përsëri, ose aplikacioni e heq me qëllim kur ndryshojnë të dhënat — quhet invalidim.

Për sajtet, serveri u tregon shfletuesve dhe CDN-ve si të ruajnë në cache çdo skedar, duke përdorur header-in Cache-Control. Për shembull, Cache-Control: max-age=3600 do të thotë „ky kopje mund të ripërdoret për një orë“.

Mjetet moderne të ndërtimit e trajtojnë pjesën më të vështirë për skedarët statikë me cache busting: sa herë që ndryshon një skedar, ai merr një emër të ri me një shenjë unike, si app.3f9a2c.js. Shfletuesit mund ta ruajnë në cache emrin e vjetër për kohë të gjatë, sepse versioni i ri thjesht ka një emër tjetër.

Një shembull i punuar: katalogu i një produkti

Keni një dyqan të vogël online. Faqja kryesore shfaq 50 produkte me çmime dhe nivele stoku nga baza e të dhënave, plus një listë „në trend“ që kërkon një llogaritje të ngadaltë mbi të gjitha porositë.

  1. Imazhet dhe skriptet ruhen në cache nga shfletuesi dhe CDN-ja për kohë të gjatë. Çdo ndërtim i ri u jep skedarëve të ndryshuar emra të rinj, kështu që përditësimet prapë shfaqen.
  2. Lista në trend llogaritet një herë çdo 10 minuta dhe ruhet në një cache aplikacioni. Çdo vizitor gjatë atyre 10 minutave merr rezultatin e ruajtur menjëherë.
  3. Çmimet ruhen në cache për pak kohë, dhe cache-i pastrohet sa herë që redaktoni një produkt, kështu që klientët nuk shohin kurrë një çmim të vjetër për gjatë kohe.
  4. Stoku në arkëtim nuk ruhet kurrë në cache. Kur dikush klikon „Bli“, aplikacioni kontrollon bazën reale të të dhënave, kështu që nuk mund të shesë një artikull që sapo mbaroi.
  5. Faqet e shportës dhe të llogarisë nuk ruhen kurrë në cache të përbashkëta, sepse janë personale.

Rezultati: faqja kryesore është e shpejtë, baza e të dhënave bën shumë më pak punë, dhe asgjë që ka rëndësi për paratë ose privatësinë nuk është kurrë e vjetëruar.

Termat kryesorë

TermiKuptimi
Cache hit / missTë dhënat u gjetën në cache / duhej të merreshin nga burimi.
TTL (time to live)Sa kohë konsiderohet e freskët një kopje e ruajtur.
Të dhëna të vjetëruara (stale)Një kopje e ruajtur që nuk është më e përditësuar.
InvalidimiHeqja e qëllimshme e një kopjeje të ruajtur, sepse origjinali ndryshoi.
Cache bustingNdryshimi i emrit ose URL-së së një skedari kur ndryshon, që cache-et ta marrin versionin e ri.
Cache-ControlHeader-i HTTP që u tregon shfletuesve dhe CDN-ve si ta ruajnë në cache një përgjigje.
Rifreskim i plotë (hard refresh)Rifreskimi i një faqeje duke i thënë shfletuesit të injorojë cache-in e vet.
RedisNjë depo e njohur të dhënash në memorie, shpesh e përdorur si cache aplikacioni.

Keqkuptime të zakonshme

  • „Cache-imi është gjithmonë i mirë.“ Ruajtja në cache e gjënë së gabuar krijon gabime reale: çmime të vjetra, postime të reja që mungojnë, ose — rasti më i keq — faqja private e një përdoruesi u shfaq te një tjetër. Ruajeni në cache me qëllim.
  • „Nëse shoh versionin e vjetër, përditësimi im dështoi.“ Zakonisht nuk dështoi. Provoni një rifreskim të plotë (Ctrl+Shift+R, ose Cmd+Shift+R në Mac) ose një dritare private para se të supozoni se diçka është prishur.
  • „Cache-imi e rregullon një aplikacion të ngadaltë.“ Ai fsheh ngadalësinë për kërkesat e përsëritura. Kërkesa e parë është ende e ngadaltë, dhe nëse problemi themelor është një indeks që mungon në bazën e të dhënave, rregulloje edhe atë.
  • „Duhet të ruaj çdo gjë në cache sa më gjatë që të jetë e mundur.“ Kohët e gjata të cache-imit i përshtaten skedarëve që marrin emra të rinj kur ndryshojnë. Për faqet HTML dhe të dhënat, kohët më të shkurtra janë më të sigurta.
  • „Pastrimi i cache-it tim e rregullon për të gjithë.“ Ai pastron vetëm shfletuesin tuaj. Vizitorët dhe cache-et e CDN-ve kanë kopjet e tyre.

Çfarë t'i kërkoni ndërtuesit tuaj me AI

  • „Cilat pjesë të këtij aplikacioni janë të ngadalta, dhe cilat mund të ruhen në cache me siguri?“
  • „Ruaje në cache [listën në trend / rezultatin e API-t] për [N] minuta, dhe pastroje kur ndryshojnë të dhënat themelore.“
  • „Sigurohu që asnjë faqe me të dhëna personale ose llogarie nuk mund të ruhet në cache nga një CDN ose cache i përbashkët.“
  • „Vendos kohë të gjata cache-imi për skedarët statikë me shenja unike, dhe të shkurtra për HTML.“
  • „Ruaj në cache përgjigjet nga [API e jashtme] që të mos e thërrasim në çdo ngarkim faqeje — dhe më thuaj sa të vjetëruara mund të bëhen ato të dhëna.“
  • „Shoh një version të vjetër pas publikimit. A është cache i shfletuesit tim, apo diçka nuk është vendosur?“

Cache-imi në Mythex

Pasi publikoni një përditësim të një aplikacioni Mythex, dokumentacioni thekson se cache-et e CDN-ve mund të vonojnë për pak, dhe një rifreskim i plotë i URL-së publike tregon versionin e ri — shihni Si të publikoni. Faqja Kufijtë e hostimit gjithashtu rekomandon ruajtjen në cache të asteve statike, pasi hostimi, koha e bazës së të dhënave dhe bandwidth-i paguhen nga bilanci juaj i kredisë. Çdo gjë përtej kësaj — ruajtja në cache e rezultateve të kërkesave ose përgjigjeve API — është diçka që i kërkoni agjentit ta ndërtojë te aplikacioni juaj.

Lexim i lidhur: çfarë është një CDN, si ta bëni sajtin tuaj më të shpejtë dhe çfarë është kufizimi i shpejtësisë (rate limiting).

Pyetje

Çfarë është cache-imi me fjalë të thjeshta?

Cache-imi do të thotë të ruash një kopje të diçkaje që ishte e ngadaltë ose e shtrenjtë për t'u marrë, në mënyrë që herën tjetër kur nevojitet të shërbehet shpejt nga kopja e ruajtur. Shfletuesit, CDN-të, serverët dhe bazat e të dhënave përdorin të gjitha cache-e për ta bërë aplikacionet më të shpejta dhe më lirë për t'u drejtuar.

Pse ende shoh versionin e vjetër të faqes sime pasi e kam përditësuar?

Shfletuesi juaj ose një CDN ka shumë mundësi të po shërben një kopje të ruajtur të skedarëve të vjetër. Një rifreskim i plotë (Ctrl+Shift+R në Windows, Cmd+Shift+R në Mac) zakonisht e rregullon. Për vizitorët, faqet e ndërtuara mirë u japin skedarëve të përditësuar emra të rinj, që cache-et të marrin automatikisht versionin e ri.

Çfarë bën pastrimi i cache-it?

Pastrimi i cache-it të shfletuesit fshin kopjet e ruajtura të skedarëve dhe faqeve që shfletuesi i ka ruajtur, kështu që herën tjetër i shkarkon të gjitha nga e para. Mund të rregullojë faqe që duken të prishura ose të vjetëruara, dhe faqet do të ngarkohen pak më ngadalë herën e parë pas kësaj.

A mund të shkaktojë probleme cache-imi?

Po. Rreziku kryesor është shërbimi i të dhënave të vjetëruara — një çmim i vjetër, një nivel stoku i pasaktë — ose, më keq, ruajtja në cache e një faqeje private të një përdoruesi dhe shfaqja e saj te dikush tjetër. Rregullat e mira të cache-imit vendosin çfarë mund të ruhet, për sa kohë, dhe nuk ruajnë asnjëherë të dhëna personale në cache-e të përbashkëta.

Mythex · Pricing · Ndërtoni çdo gjë me AI · Shablone faqesh dhe aplikacionesh · Mythex në krahasim · Fjalori i ndërtimit të aplikacioneve me AI · Mjete falas për ndërtimin e aplikacioneve me AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)