Rokasgrāmatas

Kas ir kešatmiņa? Vienkāršs ceļvedis lietotņu veidotājiem

Kešatmiņa nozīmē gatavas kopijas glabāšanu no kaut kā, ko bija lēni vai dārgi iegūt, lai nākamo pieprasījumu varētu ātri apmierināt no šīs kopijas. Saglabāto kopiju sauc par kešatmiņu (cache). Pārlūkprogramma kešo attēlus, lai vietne otrajā apmeklējumā ielādētos ātrāk; serveris kešo lēnas datubāzes vaicājuma rezultātu, lai to nebūtu jāizpilda katram apmeklētājam.

Kešatmiņa padara lietotnes ātrākas un lētākas darbībā. Tās lielais kompromiss ir tāds, ka kopija var novecot.

Kāpēc kešatmiņa ir svarīga, veidojot ar MI

Kešatmiņu MI veidotās lietotnēs var sastapt trīs veidos:

  • „Es atjauninju lietotni, bet joprojām redzu veco versiju.” Tas ir visbiežākais kešatmiņas moments, un parasti tas ir nekaitīgs — jūsu pārlūkprogramma vai CDN rāda saglabātu kopiju.
  • Ātrums. Ja lapa ir lēna, jo katram apmeklētājam pārrēķina vieni un tie paši skaitļi, rezultāta kešošana var padarīt to gandrīz tūlītēju.
  • Izmaksas. Daudzi MI veidotāji un hosti maksā par skaitļošanu, datubāzes laiku un ārējiem API izsaukumiem. Ja tūkstoš apmeklētāju izraisa vienu un to pašu dārgo pieprasījumu, kešatmiņa ļauj par to samaksāt vienreiz.

Pamatu zināšana ļauj pieprasīt kešošanu tur, kur tā palīdz, un pamanīt to, kad tieši tā ir iemesls, kāpēc kaut kas izskatās nepareizi.

Ikdienas salīdzinājums

Iedomājieties apmeklētas kafejnīcas virtuvi.

Katru rītu pavārs katru kafijas tasi varētu pagatavot no svaigi maltām pupiņām, tiklīdz tā ir pasūtīta. Tas ir lēni. Tā vietā viņš uz plīts uztur gatavu filtra kafijas katlu. Vairums klientu tasi saņem dažās sekundēs — tas ir kešatmiņas trāpījums (cache hit). Kad katls iztukšojas, kāds pagatavo jaunu — tas ir kešatmiņas netrāpījums (cache miss).

Bet kafija, kas stāv pārāk ilgi, novecojas, tāpēc kafejnīcai ir noteikums: izmest katru katlu, kas vecāks par 30 minūtēm. Šis noteikums ir kešatmiņas derīguma termiņš. Neviens nevienu katlu neturētu visu dienu, un neviens neiepriekš pagatavotu kāda pielāgotu pasūtījumu ar auzu pienu un trim karotītēm cukura — dažas lietas nemaz nevajadzētu kešot.

Kur atrodas kešatmiņas

Viena lapas ielāde var iziet cauri vairākām kešatmiņām — no tuvākās lietotājam līdz tālākajai:

KešatmiņaKur atrodasKo parasti glabāPiemērs
Pārlūkprogrammas kešatmiņaApmeklētāja ierīcēAttēlus, stilu failus, skriptus, fontusJūsu logotips ielādējas uzreiz otrajā lapā
CDN kešatmiņaServeri visā pasaulē, tuvu apmeklētājiemStatiskos failus un dažreiz visas lapasApmeklētājs Tokijā failus saņem no tuvākā servera, nevis no jūsu avota
Lietojumprogrammas kešatmiņaUz servera vai blakus tam, bieži atmiņā vai RedisLēnu vaicājumu vai ārējo API izsaukumu rezultātusŠodienas valūtas kursi, iegūti vienreiz stundā
Datubāzes kešatmiņaDatubāzes iekšienēNesen lietotos datus un vaicājumu plānusPopulārās rindas paliek ātrā atmiņā

CDN (satura piegādes tīkls) būtībā ir visas pasaules kešatmiņu tīkls jūsu vietnes failiem.

Kā kešatmiņa izlemj, ko paturēt

Katrai kešatmiņai jāatbild uz tiem pašiem jautājumiem:

  • Ko drīkst kešot? Publiskus, kopīgus datus (produkta attēlu, emuāra ierakstu) — jā. Privātus datus (lietotāja konta lapu, viņa ziņojumus) — nekad kopīgā kešatmiņā.
  • Cik ilgi? Šis ir TTL (time to live, dzīves ilgums). Logotipu var kešot gadu; krājumu līmeni — 30 sekundes.
  • Kā tas tiek atjaunināts? Vai nu kopija beidzas un tiek iegūta no jauna, vai lietotne tīši to noņem, kad dati mainās — to sauc par invalidāciju.

Vietnēm serveris pārlūkprogrammām un CDN pasaka, kā kešot katru failu, izmantojot Cache-Control galveni. Piemēram, Cache-Control: max-age=3600 nozīmē „šo kopiju var izmantot atkārtoti stundu”.

Mūsdienu būvēšanas rīki sarežģītāko daļu statiskiem failiem risina ar kešatmiņas maiņu (cache busting): katru reizi, kad fails mainās, tam tiek piešķirts jauns nosaukums ar pirkstu nospiedumu, piemēram, app.3f9a2c.js. Pārlūkprogrammas var ilgi kešot veco nosaukumu, jo jaunajai versijai ir cits nosaukums.

Praktisks piemērs: produktu katalogs

Jums ir neliels tiešsaistes veikals. Sākumlapā no datubāzes tiek rādīti 50 produkti ar cenām un krājumu līmeni, kā arī „populāro” saraksts, kam vajadzīgs lēns aprēķins pāri visiem pasūtījumiem.

  1. Attēlus un skriptus pārlūkprogramma un CDN kešo ilgu laiku. Katrs jaunais build izmainītajiem failiem piešķir jaunus nosaukumus, tāpēc atjauninājumi joprojām parādās.
  2. Populāro sarakstu aprēķina reizi 10 minūtēs un saglabā lietojumprogrammas kešatmiņā. Katrs apmeklētājs šajās 10 minūtēs saņem saglabāto rezultātu uzreiz.
  3. Cenas tiek kešotas īsu laiku, un kešatmiņa tiek notīrīta, kad rediģējat produktu, tāpēc klienti nekad ilgi neredz vecu cenu.
  4. Krājumi norēķinā nekad netiek kešoti. Kad kāds noklikšķina „Pirkt”, lietotne pārbauda īsto datubāzi, tāpēc nevar pārdot preci, kas tikko izpārdota.
  5. Groza un konta lapas nekad netiek glabātas kopīgās kešatmiņās, jo tās ir personīgas.

Rezultāts: sākumlapa ir ātra, datubāze strādā daudz mazāk, un nekas, kas svarīgs naudas vai privātuma ziņā, nekad nav novecojis.

Galvenie termini

TerminsNozīme
Kešatmiņas trāpījums / netrāpījumsDati tika atrasti kešatmiņā / bija jāiegūst no avota.
TTL (time to live)Cik ilgi saglabātā kopija tiek uzskatīta par svaigu.
Novecojuši datiSaglabāta kopija, kas nav aktuāla.
InvalidācijaTīša saglabātas kopijas noņemšana, jo oriģināls ir mainījies.
Kešatmiņas maiņa (cache busting)Faila nosaukuma vai URL mainīšana, kad fails mainās, lai kešatmiņa ielādētu jauno versiju.
Cache-ControlHTTP galvene, kas pārlūkprogrammām un CDN saka, kā kešot atbildi.
Pilnīga pārlādēšanaLapas pārlādēšana, liekot pārlūkprogrammai ignorēt savu kešatmiņu.
RedisPopulāra datu glabātuve atmiņā, bieži izmantota kā lietojumprogrammas kešatmiņa.

Biežākie maldi

  • „Kešatmiņa vienmēr ir laba.” Nepareizas lietas kešošana rada reālas kļūdas: vecas cenas, trūkstošus jaunus ierakstus vai — sliktākajā gadījumā — viena lietotāja privātu lapu, kas parādīta citam. Kešojiet apzināti.
  • „Ja redzu veco versiju, mans atjauninājums neizdevās.” Parasti tas nav noticis. Pirms secināt, ka kaut kas ir bojāts, izmēģiniet pilnīgu pārlādēšanu (Ctrl+Shift+R vai Cmd+Shift+R Mac datorā) vai privātu logu.
  • „Kešatmiņa novērš lēnu lietotni.” Tā slēpj lēnumu atkārtotiem pieprasījumiem. Pirmais pieprasījums joprojām ir lēns, un, ja pamatā ir trūkstošs datubāzes indekss, to arī jāizlabo.
  • „Man vajadzētu kešot visu, cik ilgi vien iespējams.” Ilgi kešošanas laiki der failiem, kuriem mainoties mainās nosaukums. HTML lapām un datiem īsāki laiki ir drošāki.
  • „Kešatmiņas notīrīšana to atrisina visiem.” Tā notīra tikai jūsu pārlūkprogrammu. Apmeklētāju un CDN kešatmiņām joprojām ir savas kopijas.

Ko jautāt savam MI veidotājam

  • „Kuras šīs lietotnes daļas ir lēnas un kuras varētu droši kešot?”
  • „Kešo [populāro sarakstu / API rezultātu] uz [N] minūtēm un notīri to, kad mainās pamatā esošie dati.”
  • „Pārliecinies, ka neviena lapa ar personas vai konta datiem nevar tikt kešota CDN vai kopīgā kešatmiņā.”
  • „Statiskajiem failiem ar pirkstu nospiedumiem iestatī ilgus kešošanas laikus, bet HTML — īsus.”
  • „Kešo atbildes no [ārējā API], lai to nesauktu katrā lapas ielādē — un pasaki, cik novecojuši dati varētu kļūt.”
  • „Pēc publicēšanas redzu veco versiju. Vai tā ir mana pārlūkprogrammas kešatmiņa, vai kaut kas nav izvietots?”

Kešatmiņa Mythex

Pēc atjauninājuma publicēšanas Mythex lietotnē dokumentācijā ir norādīts, ka CDN kešatmiņas var nedaudz atpalikt, un publiskā URL pilnīga pārlādēšana parāda jauno versiju — skatiet Kā publicēt. Lapa Hostinga ierobežojumi arī iesaka kešot statiskos resursus, jo hostingu, datubāzes laiku un joslas platumu apmaksā no jūsu kredītu bilances. Viss pārējais — vaicājumu vai API atbilžu kešošana — ir kaut kas, ko lūdzat aģentam iebūvēt jūsu lietotnē.

Papildu lasāmviela: kas ir CDN, kā padarīt savu vietni ātrāku un kas ir ierobežojums pēc biežuma.

Jautājumi

Kas ir kešatmiņa vienkāršiem vārdiem?

Kešatmiņa nozīmē saglabāt kaut kā kopiju, ko bija lēni vai dārgi iegūt, lai nākamreiz, kad tā ir vajadzīga, to varētu ātri parādīt no saglabātās kopijas. Pārlūkprogrammas, CDN, serveri un datubāzes visi izmanto kešatmiņu, lai lietotnes darbotos ātrāk un izmaksātu mazāk.

Kāpēc pēc atjaunināšanas mana tīmekļa vietne joprojām rāda veco versiju?

Jūsu pārlūkprogramma vai CDN, visticamāk, rāda saglabātu veco failu kopiju. Parasti palīdz pilnīga pārlādēšana (Windows — Ctrl+Shift+R, Mac — Cmd+Shift+R). Apmeklētājiem labi veidotas vietnes atjauninātajiem failiem piešķir jaunus nosaukumus, lai kešatmiņa automātiski ielādētu jauno versiju.

Ko dara kešatmiņas notīrīšana?

Pārlūkprogrammas kešatmiņas notīrīšana dzēš saglabātās failu un lapu kopijas, tāpēc nākamreiz viss tiek lejupielādēts no jauna. Tas var atrisināt lapas, kas izskatās bojātas vai novecojušas, un pēc tam lapas pirmo reizi ielādēsies nedaudz lēnāk.

Vai kešatmiņa var radīt problēmas?

Jā. Galvenais risks ir novecojuši dati — vecā cena, neaktuāls krājumu daudzums — vai, vēl sliktāk, kāda lietotāja privātas lapas saglabāšana kešatmiņā un parādīšana citam. Labi kešatmiņas noteikumi nosaka, kas drīkst tikt kešots un cik ilgi, un personas datus kopīgās kešatmiņās nekad neglabā.

Mythex · Pricing · Veidojiet jebko ar AI · Tīmekļa vietņu un lietotņu veidnes · Mythex salīdzinājumā · AI lietotņu veidošanas glosārijs · Bezmaksas rīki lietotņu veidošanai ar 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ų Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)