Ուղեցույցներ

Ի՞նչ է քեշավորումը։ Պարզ ուղեցույց հավելվածներ կառուցողների համար

Քեշավորումը նշանակում է պահել մի բանի պատրաստի պատճենը, որը ստանալը դանդաղ կամ թանկ էր, այնպես որ հաջորդ հարցումը կարելի է պատասխանել արագ՝ այդ պատճենից։ Պահված պատճենը կոչվում է քեշ։ Ձեր բրաուզերը քեշավորում է պատկերները, որպեսզի կայքը երկրորդ այցի ժամանակ ավելի արագ բեռնվի․ սերվերը քեշավորում է դանդաղ տվյալների բազայի հարցման արդյունքը, որպեսզի յուրաքանչյուր այցելուի համար այն նորից չկատարի։

Քեշավորումը հավելվածները դարձնում է ավելի արագ և ավելի էժան աշխատեցնելու համար։ Դրա մեծ փոխզիջումն այն է, որ պատճենը կարող է հնանալ։

Ինչու է քեշավորումը կարևոր, երբ կառուցում եք AI-ով

AI-ով կառուցված հավելվածներում քեշավորման հետ երեք եղանակով կհանդիպեք․

  • «Ես թարմացրի հավելվածը, բայց դեռ հին տարբերակն եմ տեսնում»։ Սա քեշավորման ամենատարածված դեպքն է, և սովորաբար անվնաս է․ ձեր բրաուզերը կամ CDN-ը ցույց է տալիս պահված պատճենը։
  • Արագություն։ Եթե էջը դանդաղ է, որովհետև յուրաքանչյուր այցելուի համար նույն թվերը նորից է հաշվարկում, արդյունքի քեշավորումը կարող է այն զգալ ակնթարթային։
  • Արժեք։ Շատ AI կառուցիչներ և հոստինգներ գանձում են հաշվարկային ռեսուրսների, տվյալների բազայի ժամանակի և արտաքին API կանչերի համար։ Եթե հազար այցելու նույն թանկ հարցումն է գործարկում, քեշավորումը թույլ է տալիս վճարել դրա համար միայն մեկ անգամ։

Բազային իմացությունը թույլ է տալիս քեշավորում խնդրել այնտեղ, որտեղ այն օգնում է, և ճանաչել այն, երբ այն է պատճառը, որ ինչ-որ բան սխալ է թվում։

Ամենօրյա անալոգիա

Պատկերացրեք զբաղված սրճարանի խոհանոցը։

Ամեն առավոտ խոհարարը կարող էր յուրաքանչյուր սուրճ պատրաստել թարմ աղացած հատիկներից, երբ այն պատվիրվում է։ Դա դանդաղ է։ Փոխարենը նա պատրաստ սուրճի կաթսա է պահում տաքացման սալիկի վրա։ Շատ հաճախորդներ բաժակ են ստանում վայրկյանների ընթացքում․ դա քեշի հիթ է։ Երբ կաթսան սպառվում է, ինչ-որ մեկը նոր է պատրաստում՝ քեշի միս (miss)։

Բայց սուրճը երկար մնալով հնանում է, ուստի սրճարանը կանոն ունի. 30 րոպեից հին ցանկացած կաթսա նետվում է։ Այդ կանոնը քեշի գործողության ժամկետն է։ Ոչ ոք չէր պահի նույն կաթսան ամբողջ օրը, և ոչ ոք չէր նախապես պատրաստի մեկի անհատական պատվերը՝ վարսակի կաթով և երեք շաքարով․ ոմանք բնավ չպետք է քեշավորվեն։

Որտեղ են գտնվում քեշերը

Մեկ էջի բեռնումը կարող է անցնել մի քանի քեշերով՝ օգտատիրոջից ամենամոտից մինչև ամենահեռավորը․

ՔեշՈրտեղ էԻնչ է սովորաբար պահումՕրինակ
Բրաուզերի քեշԱյցելուի սարքումՊատկերներ, ոճաթերթեր, սկրիպտներ, տառատեսակներՁեր լոգոն երկրորդ էջում ակնթարթորեն է բեռնվում
CDN քեշԱշխարհով մեկ սերվերներ, մոտ այցելուներինՍտատիկ ֆայլեր և երբեմն ամբողջ էջերՏոկիոյից այցելուն ֆայլեր է ստանում մոտակա սերվերից, ոչ թե ձեր աղբյուրից
Հավելվածի քեշՁեր սերվերի վրա կամ կողքին, հաճախ հիշողությունում կամ Redis-ումԴանդաղ հարցումների կամ արտաքին API կանչերի արդյունքներԱյսօրվա փոխարժեքները, բերված մեկ անգամ ժամում
Տվյալների բազայի քեշՏվյալների բազայի ներսումՎերջերս օգտագործված տվյալներ և հարցման պլաններՀաճախ օգտագործվող տողերը մնում են արագ հիշողությունում

CDN-ը (content delivery network՝ բովանդակության առաքման ցանց) ըստ էության աշխարհով մեկ քեշերի ցանց է ձեր կայքի ֆայլերի համար։

Ինչպես է քեշը որոշում, թե ինչ պահել

Յուրաքանչյուր քեշ պետք է պատասխանի նույն հարցերին․

  • Ի՞նչն է կարելի քեշավորել։ Հանրային, ընդհանուր տվյալները (արտադրանքի պատկեր, բլոգի գրառում)՝ այո։ Անձնական տվյալները (օգտատիրոջ հաշվի էջը, նրա հաղորդագրությունները)՝ երբեք ընդհանուր քեշում։
  • Որքա՞ն ժամանակով։ Սա TTL-ն է (time to live, կենդանության ժամանակ)։ Լոգոն կարող է քեշավորվել մեկ տարով, իսկ պահեստային մնացորդը՝ 30 վայրկյանով։
  • Ինչպե՞ս է թարմացվում։ Կա՛մ պատճենը ժամկետանց է լինում և նորից է բերվում, կա՛մ հավելվածը միտումնավոր հեռացնում է այն, երբ տվյալները փոխվում են․ սա կոչվում է անվավերացում (invalidation)։

Վեբ կայքերի համար սերվերը բրաուզերներին և CDN-երին ասում է, թե ինչպես քեշավորել յուրաքանչյուր ֆայլ՝ Cache-Control վերնագրի միջոցով։ Օրինակ՝ Cache-Control: max-age=3600-ը նշանակում է. «այս պատճենը կարելի է կրկին օգտագործել մեկ ժամ»։

Կառուցման ժամանակակից գործիքները ստատիկ ֆայլերի համար ամենադժվար մասը լուծում են քեշի վերանվանմամբ (cache busting)․ յուրաքանչյուր անգամ, երբ ֆայլը փոխվում է, այն ստանում է նոր անուն՝ մատնահետքով, օրինակ՝ app.3f9a2c.js։ Բրաուզերները կարող են հին անունը երկար քեշավորել, քանի որ նոր տարբերակը պարզապես ուրիշ անուն ունի։

Օրինակ աշխատանքում․ ապրանքների կատալոգ

Ունեք փոքր առցանց խանութ։ Գլխավոր էջը ցույց է տալիս 50 ապրանք գներով ու մնացորդներով տվյալների բազայից, ինչպես նաև «թրենդային» ցուցակ, որը պահանջում է դանդաղ հաշվարկ բոլոր պատվերների վրա։

  1. Պատկերները և սկրիպտները բրաուզերը և CDN-ը երկար ժամանակ են քեշավորում։ Յուրաքանչյուր նոր build նոր անուն է տալիս փոխված ֆայլերին, այնպես որ թարմացումները դեռ երևում են։
  2. Թրենդային ցուցակը հաշվարկվում է յուրաքանչյուր 10 րոպեն մեկ և պահվում հավելվածի քեշում։ Այդ 10 րոպեի ընթացքում յուրաքանչյուր այցելու ակնթարթորեն ստանում է պահված արդյունքը։
  3. Գները քեշավորվում են կարճ ժամանակով, և քեշը մաքրվում է, երբ խմբագրում եք ապրանքը, այնպես որ հաճախորդները երկար ժամանակ հին գին չեն տեսնում։
  4. Մնացորդը դրամարկղում երբեք չի քեշավորվում։ Երբ ինչ-որ մեկը սեղմում է «Գնել», հավելվածը ստուգում է իրական տվյալների բազան, այնպես որ չի կարող վաճառել հենց նոր վաճառված ապրանք։
  5. Զամբյուղի և հաշվի էջերը երբեք չեն պահվում ընդհանուր քեշերում, քանի որ դրանք անձնական են։

Արդյունքը. գլխավոր էջը արագ է, տվյալների բազան շատ ավելի քիչ աշխատանք է կատարում, և ոչինչ, որ կարևոր է փողի կամ գաղտնիության համար, երբեք հնացած չէ։

Հիմնական տերմիններ

ՏերմինՆշանակություն
Քեշի հիթ / միս (hit / miss)Տվյալը գտնվել է քեշում / պետք է բերվեր աղբյուրից։
TTL (time to live)Որքան ժամանակ է պահված պատճենը համարվում թարմ։
Հնացած տվյալ (stale data)Քեշավորված պատճեն, որը հնացել է։
Անվավերացում (invalidation)Քեշավորված պատճենի միտումնավոր հեռացում, քանի որ բնօրինակը փոխվել է։
Քեշի վերանվանում (cache busting)Ֆայլի անվան կամ URL-ի փոփոխություն, երբ այն փոխվում է, որպեսզի քեշերը նոր տարբերակը բերեն։
Cache-ControlHTTP վերնագիր, որը ասում է բրաուզերներին և CDN-երին, թե ինչպես քեշավորել պատասխանը։
Կոշտ թարմացում (hard refresh)Էջի վերաբեռնում՝ բրաուզերին ասելով անտեսել իր քեշը։
RedisՀայտնի հիշողության մեջ տվյալների պահեստ, հաճախ օգտագործվում որպես հավելվածի քեշ։

Տարածված սխալ պատկերացումներ

  • «Քեշավորումը միշտ լավ է»։ Սխալ բանի քեշավորումը իրական սխալներ է առաջացնում․ հին գներ, չերևացող նոր գրառումներ կամ, ամենավատ դեպքում, մեկ օգտատիրոջ մասնավոր էջ՝ մեկ ուրիշին ցույց տրված։ Քեշավորեք միտումնավոր։
  • «Եթե տեսնում եմ հին տարբերակը, իմ թարմացումը ձախողվել է»։ Սովորաբար չի ձախողվել։ Նախքան ինչ-որ բան կոտրված համարելը փորձեք կոշտ թարմացում (Ctrl+Shift+R կամ Mac-ում Cmd+Shift+R) կամ մասնավոր պատուհան։
  • «Քեշավորումը շտկում է դանդաղ հավելվածը»։ Այն թաքցնում է դանդաղությունը կրկնվող հարցումների համար։ Առաջին հարցումը դեռ դանդաղ է, և եթե հիմնական խնդիրը բացակայող տվյալների բազայի ինդեքս է, այն էլ շտկեք։
  • «Պետք է ամեն ինչ քեշավորեմ, որքան հնարավոր է երկար»։ Երկար քեշի ժամանակները հարմար են այն ֆայլերի համար, որոնք նոր անուն են ստանում, երբ փոխվում են։ HTML էջերի և տվյալների համար կարճ ժամանակներն ավելի ապահով են։
  • «Քեշը մաքրելը բոլորի համար է շտկում»։ Այն մաքրում է միայն ձեր բրաուզերը։ Այցելուների և CDN-ի քեշերը դեռ ունեն իրենց պատճենները։

Ինչ հարցնել ձեր AI կառուցիչից

  • «Այս հավելվածի որ մասերն են դանդաղ, և որոնք կարելի է անվտանգ քեշավորել;»
  • «Քեշավորիր [թրենդային ցուցակը / API արդյունքը] [N] րոպե, և մաքրիր այն, երբ փոխվում են հիմնական տվյալները։»
  • «Ապահովիր, որ անձնական կամ հաշվի տվյալներով ոչ մի էջ չի կարող քեշավորվել CDN-ի կամ ընդհանուր քեշի կողմից։»
  • «Ստատիկ ֆայլերի համար, որոնք ստանում են մատնահետք, դիր երկար քեշի ժամանակներ, իսկ HTML-ի համար՝ կարճ։»
  • «Քեշավորիր [արտաքին API]-ի պատասխանները, որպեսզի յուրաքանչյուր էջի բեռնման ժամանակ այն չկանչենք, և ասա, թե որքան հնացած կարող են լինել այդ տվյալները։»
  • «Հրապարակումից հետո տեսնում եմ հին տարբերակ։ Սա իմ բրաուզերի քեշն է, թե ինչ-որ բան չի տեղակայվել;»

Քեշավորումը Mythex-ում

Քանի որ Mythex հավելվածին թարմացում եք հրապարակում, փաստաթղթերը նշում են, որ CDN քեշերը կարող են կարճ ժամանակ ուշանալ, և հրապարակված URL-ի կոշտ թարմացումը ցույց է տալիս նոր տարբերակը։ Տե՛ս Ինչպես հրապարակել։ Հոստինգի սահմանաչափերի էջը նույնպես խորհուրդ է տալիս ստատիկ ակտիվների քեշավորում, քանի որ հոստինգի, տվյալների բազայի ժամանակի և թողունակության համար վճարվում է ձեր կրեդիտների մնացորդից։ Այդ ամենից դուրս՝ հարցումների արդյունքների կամ API պատասխանների քեշավորումը բան է, որ գործակալից խնդրում եք ձեր հավելվածի մեջ կառուցել։

Առնչվող ընթերցանություն․ ինչ է CDN-ը, ինչպես դարձնել ձեր կայքը ավելի արագ և ինչ է հարցումների սահմանափակումը։

Հարցեր

Ի՞նչ է քեշավորումը պարզ տերմիններով։

Քեշավորումը նշանակում է պահել մի բանի պատճենը, որը ստանալը դանդաղ կամ թանկ էր, որպեսզի հաջորդ անգամ, երբ այն պետք լինի, արագ սպասարկվի պահված պատճենից։ Բրաուզերները, CDN-երը, սերվերները և տվյալների բազաները բոլորը օգտագործում են քեշեր՝ հավելվածները արագ և էժան աշխատեցնելու համար։

Ինչու եմ դեռ տեսնում կայքի հին տարբերակը, երբ թարմացնում եմ այն։

Ձեր բրաուզերը կամ CDN-ը, հավանաբար, սպասարկում է հին ֆայլերի քեշավորված պատճենը։ Կոշտ թարմացումը (Windows-ում՝ Ctrl+Shift+R, Mac-ում՝ Cmd+Shift+R) սովորաբար շտկում է դա։ Այցելուների համար լավ կառուցված կայքերը թարմացված ֆայլերին նոր անուններ են տալիս, որպեսզի քեշերը ինքնաբերաբար բեռնեն նոր տարբերակը։

Ի՞նչ է անում բրաուզերի քեշը մաքրելը։

Բրաուզերի քեշը մաքրելը ջնջում է բրաուզերի պահած ֆայլերի և էջերի պատճենները, որպեսզի հաջորդ անգամ ամեն ինչ նորից բեռնվի։ Դա կարող է շտկել այն էջերը, որոնք կոտրված կամ հնացած են թվում, իսկ էջերը առաջին անգամ հետո մի փոքր ավելի դանդաղ կբեռնվեն։

Կարո՞ղ է քեշավորումը խնդիրներ առաջացնել։

Այո։ Հիմնական ռիսկը հնացած տվյալներ սպասարկելն է՝ հին գին կամ հնացած պահեստային մնացորդ, կամ, ավելի վատ, մեկ օգտատիրոջ մասնավոր էջը քեշավորել և ցույց տալ մեկ ուրիշին։ Լավ քեշավորման կանոնները որոշում են, թե ինչը կարելի է քեշավորել, որքան ժամանակով, և երբեք չեն քեշավորում անձնական տվյալները ընդհանուր քեշերում։

Mythex · Pricing · Կառուցեք ամեն ինչ AI-ով · Կաղապարներ կայքերի և հավելվածների համար · Mythex-ի համեմատությունները · AI-ով հավելվածների ստեղծման բառարան · Անվճար գործիքներ 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 Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)