Vadovai

Kas yra talpykla (cache)? Paprastas vadovas kuriantiems programas

Talpykla reiškia paruoštos kopijos išsaugojimą to, kas buvo lėta ar brangu gauti, kad kitas to paties prašymas būtų patenkintas greitai iš tos kopijos. Išsaugota kopija vadinama talpykla (angl. cache). Naršyklė talpina paveikslėlius, kad svetainė antrą kartą atsidarytų greičiau; serveris talpina lėtos duomenų bazės užklausos rezultatą, kad jos nevykdytų kiekvienam lankytojui.

Talpykla daro programas greitesnes ir pigesnes eksploatuoti. Didžioji jos kaina yra ta, kad kopija gali pasenti.

Kodėl talpykla svarbi kuriant su DI

AI kuriamose programose su talpykla susidursite trimis būdais:

  • „Atnaujinau programą, bet vis dar matau seną versiją.“ Tai dažniausias talpyklos atvejis, ir paprastai jis nekenksmingas – naršyklė ar CDN rodo išsaugotą kopiją.
  • Greitis. Jei puslapis lėtas, nes kiekvienam lankytojui perskaičiuoja tuos pačius skaičius, rezultato talpinimas gali padaryti, kad jis atrodytų momentinis.
  • Kaina. Daugelis DI kūrėjų ir hostingo paslaugų moka už skaičiavimus, duomenų bazės laiką ir išorinių DI API iškvietimus. Jei tūkstantis lankytojų sukelia tą pačią brangią užklausą, talpykla leidžia ją apmokėti vieną kartą.

Žinodami pagrindus galite prašyti talpyklos ten, kur ji padeda, ir atpažinti ją, kai ji yra priežastis, dėl ko kas nors atrodo neteisingai.

Kasdienis palyginimas

Pagalvokite apie užimtos kavinės virtuvę.

Kiekvieną rytą virėjas galėtų kiekvieną kavą virti iš šviežiai maltų pupelių, kai ji užsakoma. Tai lėta. Vietoj to jis laiko paruoštą filtruotos kavos puodą ant kaitlentės. Dauguma klientų kavą gauna per kelias sekundes – tai talpyklos pataikymas. Kai puodas ištuštėja, kažkas užvirina naują – tai talpyklos praleidimas.

Bet kava, stovėjusi per ilgai, sensta, todėl kavinė turi taisyklę: išmesti bet kurį puodą, senesnį nei 30 minučių. Ši taisyklė yra talpyklos galiojimo laikas. Niekas nelaikytų to paties puodo visą dieną, ir niekas iš anksto nevirtų individualaus užsakymo su avižų pienu ir trimis šaukštais cukraus – kai kas apskritai neturi būti talpinama.

Kur gyvena talpyklos

Vienas puslapio įkėlimas gali praeiti pro kelias talpyklas – nuo arčiausiai naudotojo iki toliausiai nuo jo:

TalpyklaKur ji yraKą paprastai saugoPavyzdys
Naršyklės talpyklaLankytojo įrenginyjePaveikslėlius, stilių lapus, scenarijus, šriftusTavo logotipas atsidaro iš karto antrame puslapyje
CDN talpyklaServeriai visame pasaulyje, arti lankytojųStatinius failus, kartais visus puslapiusLankytojas Tokijuje failus gauna iš artimo serverio, o ne iš tavo pagrindinio serverio
Programos talpyklaAnt ar šalia tavo serverio, dažnai atmintyje ar RedisLėtų užklausų ar išorinių API iškvietimų rezultatusŠiandienos valiutų kursai, gauti kartą per valandą
Duomenų bazės talpyklaDuomenų bazės vidujeNeseniai naudotus duomenis ir užklausų planusPopuliarios eilutės lieka greitoje atmintyje

CDN (turinio pristatymo tinklas) iš esmės yra pasaulinis talpyklų tinklas tavo svetainės failams.

Kaip talpykla nusprendžia, ką laikyti

Kiekviena talpykla turi atsakyti į tuos pačius klausimus:

  • Kas gali būti talpinama? Vieša, bendra informacija (produkto paveikslėlis, tinklaraščio įrašas) – taip. Privatūs duomenys (naudotojo paskyros puslapis, jo žinutės) – niekada bendroje talpykloje.
  • Kiek laiko? Tai TTL (angl. time to live, gyvavimo laikas). Logotipas gali būti talpinamas metus; atsargų likutis – 30 sekundžių.
  • Kaip jis atnaujinamas? Arba kopijos galiojimas pasibaigia ir ji vėl gaunama, arba programa sąmoningai ją pašalina, kai pasikeičia duomenys – tai vadinama invalidavimu.

Svetainėms serveris naršyklėms ir CDN nurodo, kaip talpinti kiekvieną failą, naudodamas Cache-Control antraštę. Pavyzdžiui, Cache-Control: max-age=3600 reiškia „šią kopiją galite naudoti valandą“.

Modernūs kūrimo įrankiai sprendžia sudėtingiausią dalį statiniams failams naudodami talpyklos keitimą (angl. cache busting): kiekvieną kartą, kai failas pasikeičia, jis gauna naują pavadinimą su kontroline suma, pavyzdžiui, app.3f9a2c.js. Naršyklės gali ilgai talpinti seną pavadinimą, nes nauja versija tiesiog turi kitokį pavadinimą.

Darbo pavyzdys: produktų katalogas

Turite nedidelę internetinę parduotuvę. Pradiniame puslapyje rodomi 50 produktų su kainomis ir atsargų likučiais iš duomenų bazės, taip pat „populiarių“ sąrašas, kuriam reikia lėto skaičiavimo per visus užsakymus.

  1. Paveikslėliai ir scenarijai ilgai talpinami naršyklėje ir CDN. Kiekvienas naujas kūrimas pakeistiems failams suteikia naujus pavadinimus, todėl atnaujinimai vis tiek matomi.
  2. Populiarių sąrašas apskaičiuojamas kas 10 minučių ir saugomas programos talpykloje. Kiekvienas lankytojas per tas 10 minučių gauna išsaugotą rezultatą iš karto.
  3. Kainos talpinamos trumpai, o talpykla išvaloma kiekvieną kartą, kai redaguojate produktą, todėl klientai niekada ilgai nemato senos kainos.
  4. Atsargos atsiskaitant niekada netalpinamos. Kai kas nors spusteli „Pirkti“, programa tikrina tikrą duomenų bazę, todėl negali parduoti prekės, kuri ką tik buvo išparduota.
  5. Krepšelio ir paskyros puslapiai niekada nesaugomi bendrose talpyklose, nes jie asmeniniai.

Rezultatas: pradinis puslapis greitas, duomenų bazė atlieka gerokai mažiau darbo, o niekas, svarbus pinigams ar privatumui, niekada nepasensta.

Pagrindiniai terminai

TerminasReikšmė
Talpyklos pataikymas / praleidimasDuomenys rasti talpykloje / reikėjo gauti iš šaltinio.
TTL (gyvavimo laikas)Kiek laiko išsaugota kopija laikoma šviežia.
Pasenę duomenysTalpykloje esanti kopija, kuri nebeaktuali.
InvalidavimasSąmoningas talpykloje esančios kopijos pašalinimas, nes originalas pasikeitė.
Talpyklos keitimas (cache busting)Failo pavadinimo ar URL pakeitimas, kai failas pasikeičia, kad talpyklos gautų naują versiją.
Cache-ControlHTTP antraštė, kuri nurodo naršyklėms ir CDN, kaip talpinti atsakymą.
Pilnas perkrovimasPuslapio perkrovimas nurodant naršyklei ignoruoti savo talpyklą.
RedisPopulari atmintyje veikianti duomenų saugykla, dažnai naudojama kaip programos talpykla.

Dažni klaidingi įsitikinimai

  • „Talpykla visada gera.“ Netinkamo dalyko talpinimas sukelia tikras klaidas: senas kainas, neparodomus naujus įrašus ar – blogiausiu atveju – vieno naudotojo privatų puslapį, rodomą kitam. Talpinkite sąmoningai.
  • „Jei matau seną versiją, mano atnaujinimas nepavyko.“ Paprastai ne. Prieš manydami, kad kažkas sugedo, pabandykite pilną perkrovimą (Ctrl+Shift+R, arba Cmd+Shift+R Mac) ar privatų langą.
  • „Talpykla išsprendžia lėtą programą.“ Ji tik paslepia lėtumą pasikartojančioms užklausoms. Pirmoji užklausa vis dar lėta, o jei pagrindinė problema – trūkstamas duomenų bazės indeksas, ištaisykite ir jį.
  • „Viską reikia talpinti kuo ilgiau.“ Ilgi talpinimo laikai tinka failams, kurie gauna naujus pavadinimus pasikeitus. Pamatiniams HTML puslapiams ir duomenims trumpesni laikai saugesni.
  • „Talpyklos išvalymas pataiso visiems.“ Jis išvalo tik tavo naršyklę. Lankytojų ir CDN talpyklos turi savo kopijas.

Ko paprašyti iš DI kūrėjo

  • „Kurios šios programos dalys lėtos ir kurias galima saugiai talpinti?“
  • „Talpink [populiarių sąrašą / API rezultatą] [N] minučių ir išvalyk, kai pasikeičia pagrindiniai duomenys.“
  • „Įsitikink, kad jokio puslapio su asmeniniais ar paskyros duomenimis CDN ar bendra talpykla negali įrašyti.“
  • „Nustatyk ilgus talpinimo laikus failams su kontrolinėmis sumomis ir trumpus HTML puslapiams.“
  • „Talpink [išorinio API] atsakymus, kad jo nekviestume kiekvieno puslapio įkėlimo metu – ir pasakyk, kiek tie duomenys gali pasenti.“
  • „Po publikavimo matau seną versiją. Ar tai mano naršyklės talpykla, ar kažkas neįdiegta?“

Talpykla Mythex

Po atnaujinimo publikavimo Mythex programai dokumentacija pažymi, kad CDN talpyklos gali trumpam vėluoti, o viešojo URL pilnas perkrovimas parodo naują versiją – žr. Kaip publikuoti. Puslapis Hostingo ribos taip pat rekomenduoja talpinti statinius išteklius, nes hostingas, duomenų bazės laikas ir pralaidumas apmokami iš tavo kredito balanso. Viskas, kas išeina už tai – užklausų rezultatų ar API atsakymų talpinimas – yra tai, ką paprašai agento įdiegti į tavo programą.

Susiję skaitiniai: kas yra CDN, kaip padaryti svetainę greitesnę ir kas yra greičio ribojimas.

Klausimai

Kas yra talpykla paprastais žodžiais?

Talpykla reiškia lėtai ar brangiai gaunamo dalyko kopijos išsaugojimą, kad kitą kartą, kai jo prireiks, jis būtų greitai pateiktas iš išsaugotos kopijos. Naršyklės, CDN, serveriai ir duomenų bazės naudoja talpyklas, kad programos veiktų greičiau ir kainuotų mažiau.

Kodėl atnaujinus svetainę vis dar matau seną versiją?

Tikriausiai jūsų naršyklė ar CDN rodo išsaugotą senų failų kopiją. Pilnas perkrovimas (Ctrl+Shift+R Windows, Cmd+Shift+R Mac) paprastai tai išsprendžia. Lankytojams gerai sukonstruotos svetainės atnaujintiems failams suteikia naujus pavadinimus, todėl talpyklos automatiškai atsisiunčia naują versiją.

Ką daro talpyklos išvalymas?

Naršyklės talpyklos išvalymas ištrina išsaugotas failų ir puslapių kopijas, todėl kitą kartą viskas atsisiunčiama iš naujo. Tai gali ištaisyti puslapius, kurie atrodo sugedę ar pasenę, o pirmą kartą po to puslapiai įsikels šiek tiek lėčiau.

Ar talpykla gali sukelti problemų?

Taip. Pagrindinė rizika – pasenę duomenys, pavyzdžiui, sena kaina ar pasenęs likutis, arba dar blogiau – vieno naudotojo privatus puslapis, parodytas kitam žmogui. Geros talpyklos taisyklės nustato, kas gali būti talpinama, kiek laiko, ir niekada neįrašo asmeninių duomenų bendrose talpyklose.

Mythex · Pricing · Kurkite bet ką su dirbtiniu intelektu · Svetainių ir programėlių šablonai · Mythex palyginimas · Programėlių kūrimo su dirbtiniu intelektu žodynėlis · Nemokami programėlių kūrimo su dirbtiniu intelektu įrankiai · 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 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Latviešu Македонски മലയാളം Монгол मराठी 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 简体中文 繁體中文(香港) 繁體中文(台灣)