Vodiči

Šta je keširanje? Vodič za pravljenje aplikacija bez žargona

Keširanje znači čuvanje spremne kopije nečega što je bilo sporo ili skupo za dobijanje, tako da se sledeći zahtev za to može brzo odgovoriti iz te kopije. Sačuvana kopija se zove keš. Tvoj pregledač kešira slike da se sajt brže učita pri drugoj poseti; server kešira rezultat sporog upita ka bazi da ga ne bi izvršavao za svakog posetioca.

Keširanje čini aplikacije bržim i jeftinijim za rad. Njegov veliki kompromis je to što kopija može da zastari.

Zašto je keširanje važno kada praviš aplikaciju uz AI

Keširanje ćeš sresti u aplikacijama pravljenim uz AI na tri načina:

  • „Ažurirao sam aplikaciju, ali i dalje vidim staru verziju.“ Ovo je najčešći trenutak vezan za keširanje, i obično je bezopasan: tvoj pregledač ili CDN prikazuje sačuvanu kopiju.
  • Brzina. Ako je stranica spora zato što za svakog posetioca ponovo računa iste brojeve, keširanje rezultata može da je učini trenutnom.
  • Trošak. Mnogi AI alati i hosting provajderi naplaćuju računarsku snagu, vreme baze i spoljašnje API pozive. Ako hiljadu posetilaca izazove isti skupi zahtev, keširanje ti omogućava da ga platiš jednom.

Znanje osnova ti omogućava da tražiš keširanje tamo gde pomaže i da ga prepoznaš kada je razlog zašto nešto izgleda pogrešno.

Svakodnevna analogija

Zamisli kuhinju zauzete kafane.

Svakog jutra kuvar bi mogao da pravi svaku kafu od sveže mlevenih zrna čim je neko naruči. To je sporo. Umesto toga, drži spremnu kanticu filter kafe na ringli. Većina gostiju dobije šolju za nekoliko sekundi, to je pogodak u kešu. Kada kanta ponestane, neko skuva svežu, to je promašaj keša.

Ali kafa koja stoji predugo postaje ustajala, pa kafana ima pravilo: baci svaku kanticu stariju od 30 minuta. To pravilo je vreme isteka keša. Niko ne bi čuvao istu kanticu ceo dan, i niko ne bi unapred kuvao nečiju posebnu porudžbinu sa ovsenim mlekom i tri kašičice šećera. Neke stvari se uopšte ne keširaju.

Gde žive keševi

Jedno učitavanje stranice može da prođe kroz nekoliko keševa, od onog najbližeg korisniku do onog najdaljeg:

KešGde se nalaziŠta obično čuvaPrimer
Keš pregledačaNa uređaju posetiocaSlike, stilove, skripte, fontoveTvoj logo se odmah učitava na drugoj stranici
CDN kešServeri širom sveta, blizu posetilacaStatičke fajlove, ponekad cele stranicePosetilac u Tokiju dobija fajlove sa obližnjeg servera, a ne sa tvog izvornog servera
Keš aplikacijeNa serveru ili pored njega, obično u memoriji ili Redis-uRezultate sporih upita ili spoljašnjih API pozivaDanašnji kursevi valuta, dobijeni jednom na sat
Keš baze podatakaUnutar bazeNedavno korišćene podatke i planove upitaPopularni redovi ostaju u brzoj memoriji

CDN (mreža za isporuku sadržaja) je u suštini svetska mreža keševa za fajlove tvog sajta.

Kako keš odlučuje šta da zadrži

Svaki keš mora da odgovori na ista pitanja:

  • Šta sme da se kešira? Javni, zajednički podaci (slika proizvoda, blog post): da. Privatni podaci (stranica naloga korisnika, njegove poruke): nikada u zajedničkom kešu.
  • Koliko dugo? Ovo je TTL (time to live, vreme života). Logo može da se kešira godinu dana; nivo zaliha samo 30 sekundi.
  • Kako se ažurira? Ili kopija istekne i ponovo se preuzme, ili aplikacija namerno uklanja kopiju kada se podaci promene. To se zove invalidacija.

Za sajtove, server govori pregledačima i CDN-ovima kako da keširaju svaki fajl pomoću Cache-Control zaglavlja. Na primer, Cache-Control: max-age=3600 znači „ovu kopiju možeš da koristiš jedan sat“.

Moderni alati za build rešavaju najteži deo za statičke fajlove pomoću cache busting-a: kad se fajl promeni, dobija novo ime sa otiskom, na primer app.3f9a2c.js. Pregledači mogu dugo da keširaju staro ime, jer nova verzija jednostavno ima drugo ime.

Praktičan primer: katalog proizvoda

Imaš malu onlajn prodavnicu. Početna stranica prikazuje 50 proizvoda sa cenama i stanjem zaliha iz baze, plus listu „u trendu“ koja zahteva spor proračun nad svim porudžbinama.

  1. Slike i skripte keširaju pregledač i CDN dugo vremena. Svaki novi build menja imena promenjenih fajlova, pa se ažuriranja i dalje vide.
  2. Lista „u trendu“ se računa jednom na 10 minuta i čuva u kešu aplikacije. Svaki posetilac u tom periodu dobija sačuvani rezultat odmah.
  3. Cene se keširaju kratko vreme, a keš se briše kad god izmeniš proizvod, pa kupci nikada dugo ne vide staru cenu.
  4. Zaliha pri plaćanju se nikada ne kešira. Kada neko klikne „Kupi“, aplikacija proverava pravu bazu, pa ne može da proda artikal koji je upravo rasprodat.
  5. Stranice korpe i naloga se nikada ne čuvaju u zajedničkim kešovima, jer su lične.

Rezultat: početna stranica je brza, baza radi mnogo manje posla i ništa što je važno za novac ili privatnost nikada nije zastarelo.

Ključni pojmovi

PojamZnačenje
Pogodak / promašaj kešaPodatak je pronađen u kešu / morao je da se preuzme iz izvora.
TTL (time to live)Koliko dugo se sačuvana kopija smatra svežom.
Zastareli podaciSačuvana kopija koja više nije aktuelna.
InvalidacijaNamerno uklanjanje sačuvane kopije jer se original promenio.
Cache bustingPromena imena ili URL-a fajla kada se promeni, tako da keševi preuzmu novu verziju.
Cache-ControlHTTP zaglavlje koje govori pregledačima i CDN-ovima kako da keširaju odgovor.
Tvrdo osvežavanjePonovno učitavanje stranice uz uputstvo pregledaču da ignoriše keš.
RedisPopularno skladište podataka u memoriji, često korišćeno kao keš aplikacije.

Česte zablude

  • „Keširanje je uvek dobro.“ Keširanje pogrešne stvari izaziva pravi kvar: stare cene, nedostajuće nove objave ili, u najgorem slučaju, privatnu stranicu jednog korisnika prikazanu drugom. Keširaj namerno.
  • „Ako vidim staru verziju, moje ažuriranje nije uspelo.“ Obično jeste uspelo. Pre nego što pretpostaviš da nešto nije u redu, probaj tvrdo osvežavanje (Ctrl+Shift+R, ili Cmd+Shift+R na Mac-u) ili privatni prozor.
  • „Keširanje popravlja sporu aplikaciju.“ Ono samo skriva sporost za ponovljene zahteve. Prvi zahtev je i dalje spor, a ako je pravi problem nedostajući indeks baze, popravi i to.
  • „Treba sve da keširam što duže.“ Duga vremena keširanja pogoduju fajlovima koji dobijaju nova imena kada se promene. Za HTML stranice i podatke kraća vremena su bezbednija.
  • „Brisanje mog keša popravlja stvar za sve.“ Briše samo tvoj pregledač. Posetioci i CDN keševi i dalje imaju svoje kopije.

Šta tražiti od svog AI alata

  • „Koji delovi ove aplikacije su spori, a koji bi se bezbedno keširali?“
  • „Keširaj [listu u trendu / rezultat API-ja] na [N] minuta, i obriši ga kada se osnovni podaci promene.“
  • „Pobrini se da nijedna stranica sa ličnim ili nalog podacima ne može da se kešira na CDN-u ili u zajedničkom kešu.“
  • „Postavi duga vremena keširanja za fajlove sa otiskom, a kratka za HTML.“
  • „Keširaj odgovore od [spoljašnjeg API-ja] da ga ne pozivamo pri svakom učitavanju stranice, i reci mi koliko ti podaci mogu da zastare.“
  • „Posle objavljivanja vidim staru verziju. Da li je to keš mog pregledača ili nešto nije postavljeno?“

Keširanje u Mythex-u

Posle objavljivanja ažuriranja Mythex aplikacije, dokumentacija napominje da CDN keševi mogu kratko da kasne, a tvrdo osvežavanje javnog URL-a prikazuje novu verziju. Pogledaj kako objaviti. Stranica ograničenja hostinga takođe preporučuje keširanje statičkih resursa, jer se hosting, vreme baze i saobraćaj plaćaju sa tvog kredit salda. Sve što ide dalje, poput keširanja rezultata upita ili API odgovora, tražiš od agenta da ugradi u tvoju aplikaciju.

Srodno čitanje: šta je CDN, kako ubrzati sajt i šta je ograničavanje broja zahteva.

Pitanja

Šta je keširanje jednostavnim rečima?

Keširanje znači čuvanje kopije nečega što je bilo sporo ili skupo za dobijanje, tako da se sledeći put kada zatreba može brzo poslužiti iz sačuvane kopije. Pregledači, CDN-ovi, serveri i baze podataka svi koriste keševe da bi aplikacije bile brže i jeftinije za rad.

Zašto i dalje vidim staru verziju sajta posle ažuriranja?

Tvoj pregledač ili CDN verovatno služi kopiju starih fajlova. Tvrdo osvežavanje (Ctrl+Shift+R na Windows-u, Cmd+Shift+R na Mac-u) obično to reši. Za posetioce, dobro napravljeni sajtovi dodeljuju ažuriranim fajlovima nova imena, pa keševi automatski preuzimaju novu verziju.

Šta radi brisanje keša?

Brisanje keša pregledača uklanja sačuvane kopije fajlova i stranica koje je pregledač zapamtio, pa sve ponovo preuzima iz početka. Može da popravi stranice koje izgledaju pokvareno ili zastarelo, a stranice će se posle toga prvi put učitavati malo sporije.

Može li keširanje da izazove probleme?

Može. Glavni rizik je služenje zastarelih podataka, na primer stare cene ili zastarelog stanja zaliha, ili, još gore, keširanje privatne stranice jednog korisnika i prikazivanje drugom korisniku. Dobra pravila keširanja određuju šta sme da se kešira, koliko dugo, i nikada ne keširaju lične podatke u zajedničkim keševima.

Mythex · Pricing · Pravite bilo šta uz AI · Šabloni za sajtove i aplikacije · Mythex u poređenju · Rečnik pojmova za pravljenje aplikacija uz AI · Besplatni alati za pravljenje aplikacija uz 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 Shqip Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)