Բաց թողնել հիմնական բովանդակություն

Ինչ է caching-ը իրականում՝ պարզ բացատրությամբ

22238 Դիտումներ

Շատ սկսնակներ caching բառը լսելիս մտածում են, թե դա ինչ-որ խորհրդավոր performance հնարք է, որը թաքնված է համակարգերի խորքում։

Բայց գաղափարի հիմքը շատ մարդկային է։ Caching-ը այն է, երբ համակարգը օգտակար արդյունքը պահում է մոտ տեղում, որպեսզի ամեն անգամ ստիպված չլինի այն նորից բերել կամ հաշվարկել։ Սա ավելի քիչ է կապված «մոգության» և ավելի շատ՝ ավելորդ կրկնությունը խուսափելու հետ։

Դա հասկանալու համար պատկերացրեք մարդաշատ սրճարան։ Եթե հաճախորդը ամեն ժամ մեկ անգամ հարցնի Wi-Fi-ի գաղտնաբառը, բարիստան կարող է ամեն անգամ գնալ տնօրենի սենյակ և նորից ճշտել այն։ Դա հնարավոր է, բայց դանդաղ, անիմաստ և նյարդայնացնող կլինի։ Ավելի խելացի տարբերակն այն է, որ գաղտնաբառը գրած լինի վաճառասեղանի հետևում, որպեսզի պատասխանը միանգամից հասանելի լինի։ Սա շատ մոտ է նրան, ինչ caching-ն է անում ծրագրերում։

Caching-ը պահված հարմարավետություն է

Caching-ը հասկանալու ամենապարզ տարբերակը սա է․ այն օգտակար բանը պահում է ավելի արագ հասանելի տեղում, որպեսզի հաջորդ օգտագործումը ավելի հեշտ լինի։ Այդ «օգտակար բանը» կարող է լինել տվյալ, հաշվարկված արդյունք, նկար, վեբ էջ, տվյալների բազայի հարցման արդյունք կամ նույնիսկ մեկ այլ ծառայության պատասխան։

Նպատակը սկզբնական աղբյուրը հավերժ փոխարինելը չէ։ Նպատակն այն է, որ համակարգը նույն թանկարժեք աշխատանքը նորից ու նորից չանի, եթե պատասխանը մեծ հավանականությամբ անմիջապես չի փոխվել։

Ինչու համակարգերին պետք է caching

Ծրագրային աշխարհի շատ մասեր ավելի դանդաղ են, քան ծրագրավորողները կցանկանային։ Տվյալների բազայի հարցումները կարող են ժամանակ պահանջել։ Արտաքին API-ները կարող են ուշանալ։ Հաշվետվությունների ստեղծումը կարող է ծանր լինել։ Էջերի գեներացիան կարող է մի քանի քայլ պահանջել։ Եթե ամեն հարցում ստիպում է համակարգին զրոյից կրկնել այդ ամբողջ աշխատանքը, արագությունը տուժում է։

Caching-ը օգնում է, որովհետև համակարգը կարող է ասել․ «Ես արդեն գիտեմ այս պատասխանը։ Պետք չէ այն հենց հիմա նորից կառուցել»։

Պարզ օրինակ

Պատկերացրեք օնլայն խանութ, որի գլխավոր էջում կա «Այս շաբաթվա ամենավաճառվող 10 ապրանքները» բաժինը։ Այդ ցուցակը պարտադիր չէ ամեն անգամ հաշվարկել, երբ նոր այցելու է բացում էջը։ Եթե կայքը յուրաքանչյուր այցելուի համար վաճառքների հում տվյալներից նորից է կազմում այդ ցուցակը, սերվերը անընդհատ նույն աշխատանքն է անում։

Ավելի լավ տարբերակն այն է, որ ցուցակը հաշվարկվի մեկ անգամ, կարճ ժամանակով պահվի և նույն պահված տարբերակը ցուցադրվի շատ այցելուների։ Այդ պահված տարբերակն էլ cache-ն է։

Ինչու caching-ը այդքան ուժեղ է թվում

Caching-ը հաճախ շատ զգալի արագացում է տալիս, որովհետև փոխում է համակարգի տված հարցը։ «Ինչպե՞ս զրոյից կառուցեմ այս արդյունքը» հարցի փոխարեն համակարգը հարցնում է՝ «Արդյո՞ք արդեն ունեմ դրա վերջին պատրաստ տարբերակը»։ Այս տարբերությունը խնայում է ժամանակ, սերվերի ռեսուրս և օգտատիրոջ համբերություն։

Շատ հավելվածներում արագությունը բարելավվում է ոչ թե նրա համար, որ համակարգը ավելի լավ է հաշվարկում, այլ նրա համար, որ այն ավելի լավ է հասկանում՝ երբ չհաշվարկել նորից։

Բայց caching-ը ունի փոխզիջում

Caching-ը իդեալական է թվում, մինչև հայտնվում է մեկ կարևոր հարց՝ արդիականությունը։ Եթե պատասխանը շատ երկար պահեք, այն կարող է հնանալ։ Այսինքն caching-ը միշտ հավասարակշռություն է արագության և ճշգրտության միջև։

Օրինակ՝ եղանակի տվյալը մի քանի րոպե cache անելն ընդունելի է։ Բաժնետոմսի գինը ժամերով cache անելն արդեն կարող է վտանգավոր լինել։ Ապրանքի էջը cache անելն օգտակար է, բայց հաշվի մնացորդը անզգույշ cache անելը կարող է լուրջ խնդիրներ ստեղծել։

Ահա թե ինչու ծրագրավորողները պետք է ուշադիր մտածեն՝ ինչ cache անել, որտեղ cache անել և որքան ժամանակով պահել։

Որտեղ է caching-ը հաճախ հանդիպում

Caching-ը հանդիպում է շատ ավելի շատ տեղերում, քան սկսնակները սովորաբար պատկերացնում են։ Օրինակ՝

  • բրաուզերը պահում է նկարներն ու ֆայլերը, որպեսզի կայքերը հաջորդ անգամ ավելի արագ բացվեն
  • սերվերը պահում է տվյալների բազայի հարցումների արդյունքները
  • CDN-ը բովանդակության պատճենները պահում է օգտատերերին մոտ տարածաշրջաններում
  • հավելվածը ժամանակավորապես հիշում է հաշվարկված արժեքները
  • API պատասխանը կարճ ժամանակով վերօգտագործվում է

Երբ գաղափարը հասկանում եք, սկսում եք caching-ը տեսնել գրեթե ամեն տեղ ժամանակակից համակարգերում։

Ինչու ծրագրավորողները պետք է զգույշ լինեն

Caching-ը կարող է արագացնել համակարգը, բայց կարող է նաև ստեղծել դժվար նկատվող խնդիրներ։ Օգտատերը կարող է հին բովանդակություն տեսնել։ Մի ծառայությունը կարող է նոր տվյալ ունենալ, մինչ մյուսը դեռ հինը ցույց տա։ Էջը մեկ մարդու համար ճիշտ թվա, իսկ մյուսի համար՝ հնացած։ Այս խնդիրները լինում են, որովհետև caching-ը լրացուցիչ շերտ է ավելացնում ճշմարտության աղբյուրի և օգտատիրոջ տեսած արդյունքի միջև։

Այդ պատճառով caching-ը ուժեղ է, բայց երբեք «անվճար» չէ։ Այն նվազեցնում է կրկնվող աշխատանքը, բայց միաժամանակ consistency-ի հարցեր է առաջացնում։

Ինչու սա կարևոր է նաև ոչ ինժեներների համար

Backend ինժեներ լինել պետք չէ հասկանալու համար, թե ինչու caching-ը կարևոր է։ Պրոդուկտ մենեջերները, հիմնադիրները, դիզայներները և մարքեթոլոգները հաճախ մտածում են, թե ինչու որոշ փոփոխություններ միանգամից են երևում, իսկ մյուսները՝ ուշացումով, կամ ինչու կայքը երբեմն շատ արագ է, բայց երբեմն էլ անհամահունչ։ Շատ հաճախ պատասխանի մի մասը caching-ն է։

Caching-ը հասկանալը օգնում է տեսնել, որ performance-ը միայն «ավելի արագ սերվերների» մասին չէ։ Այն հաճախ ճիշտ բաները ճիշտ տեղում ճիշտ ժամանակով պահելու մասին է։

Եզրակացություն

Caching-ը օգտակար պատասխանը նախապես հիշելու արվեստն է, մինչև նույն հարցը նորից կտրվի։ Այն համակարգերը ավելի արագ է դարձնում՝ խուսափելով կրկնվող աշխատանքից։ Երբ սա հասկանում եք, caching-ը դադարում է հնչել որպես խորհրդավոր ինժեներական տերմին և սկսում է թվալ շատ գործնական գաղափար։


Հետևեք մեզ

Մնացեք կապի մեջ և ստացեք վերջին թարմացումները

Ծառայություններ

Բացահայտեք մեր ծառայությունները

Ստանալ առաջարկ

Նշեք, թե ինչ է ձեզ անհրաժեշտ

Դիտել բոլոր հոդվածները

Կարդացեք ավելի շատ հոդվածներ

Ինչ է caching-ը իրականում՝ պարզ բացատրությամբ | Numerus System | Numerus System