Երբևէ զգացե՞լ եք, որ ձեր վեբ հավելվածը «Կրիան» է տխրահռչակ «Կրիան և Նապաստակը» առակից: Բացառությամբ այս դեպքի, մրցավազքում դանդաղ և հաստատուն հաղթանակ չկա. միայն ձեր օգտատերերն են անհամբեր թմբկահարում իրենց մատները: Գոյություն ունի սուպերհերոս, որը կարող է ներխուժել օրը փրկելու համար, բայց մենք չափազանց երկար ժամանակ անտեսել ենք այն: Ժամանակն է խոսել Cache-Control-ի մասին:

Այսպիսով, ի՞նչ է սա «Cache-Control»-ը: Այն հնչում է որպես սուպերհերոսի ուժ, այնպես չէ՞: Պատկերացրեք այս սցենարը. դուք մտնում եք ձեր սիրելի սրճարան, և նախքան որևէ բառ ասելը, նրանք ձեզ հանձնում են ձեր սովորականը` թարմ պատրաստված: Դա Cache-Control-ն է ձեր վեբ հավելվածի համար: Ամեն անգամ թարմ բաժակ եփելու փոխարեն այն հիշում է ձեր սիրելին և անմիջապես մատուցում: Թույն, հա՞:

Ահա թե ինչպես է այն աշխատում. երբ զննարկիչը վերցնում է վեբ էջը, այն պահում է դրա պատճենը: Այս կերպ, երբ վերանայում եք էջը, այն պետք չէ նորից վերցնել ամեն ինչ: Այն նայում է պահված պատճենին, քեշին և ասում. «Օ՜հ, ես հենց այստեղ եմ ստացել»: և այն ներկայացնում է ձեզ ավելի արագ, քան «Բազինգա» ասելու համար անհրաժեշտ ժամանակը: Այստեղ է, որ Cache-Control-ը քայլեր է ձեռնարկում այս գործընթացը կառավարելու և ձեր հավելվածի աշխատանքը բարելավելու համար:

Դուք, խելացի վեբ ծրագրավորող, կարող եք հարցնել. «Բայց ինչպե՞ս ենք մենք իրականացնում Cache-Control»: Հիանալի հարց, իմ խորաթափանց ընկեր: Կան բազմաթիվ հրահանգներ, որոնք կարող եք օգտագործել, ինչպիսիք են no-cache, no-store, max-age և այլն: Օրինակ, ձեր HTTP վերնագրում max-age=3600 սահմանելը նշանակում է, որ քեշը լավ է մեկ ժամով: Այնուհետև զննարկիչը պետք է նորը ստանա:

Express.js սերվերում այն ​​նման կլինի հետևյալին.

app.use((req, res, next) => {
  res.set('Cache-control', 'public, max-age=3600');
  next();
});

Եկեք իրական դառնանք այստեղ մի քանի օրինակներով:

Դիտարկենք լրատվական կայք: Հրատապ լուրերի բաժինը թարմացվում է ամեն րոպե: Դուք no-cache-ը կամ max-age-ին կսահմանեիք շատ ցածր արժեք՝ համոզվելու համար, որ ձեր օգտատերերը վերջին ժամվա հին վերնագրերի փոխարեն ստանում են ամենավերջին նորությունները: Բայց ձեր կայքի լոգոյի համար, որը փոխվում է նույնքան հաճախ, որքան նահանջ տարին, ավելի երկար max-age օգտագործելն օգնում է: Բրաուզերը կարիք չունի ամեն անգամ ներբեռնելու լոգոն՝ խնայելով ռեսուրսները և բեռնման ժամանակը:

Նորությունների սերվերում դա կարող է այսպիսի տեսք ունենալ.

app.use('/news', (req, res, next) => {
  res.set('Cache-Control', 'public, max-age=60');
  next();
});

app.use('/static/logo', (req, res, next) => {
  res.set('Cache-Control', 'public, max-age=31536000');  // A year
  next();
});

Հիշեք, որ մեծ զորությամբ մեծ պատասխանատվություն է գալիս: Cache-Control-ը կարող է զգալիորեն բարելավել ձեր վեբ հավելվածի աշխատանքը, սակայն ոչ պատշաճ օգտագործումը կարող է հանգեցնել հնացած տվյալների կամ ավելի մեծ սերվերի բեռի: Ուրեմն խելամտորեն օգտագործեք այս ուժը:

Որպես վեբ մշակողներ, ուսանողներ կամ մասնագետներ, Cache-Control-ի ըմբռնումն ու իրականացումը նման է թաքնված Infinity Stone-ի հայտնաբերմանը վեբ զարգացման հսկայական Marvel տիեզերքում: Դա հզոր գործիք է, որը կարող է կտրուկ բարելավել ձեր վեբ հավելվածի աշխատանքը՝ դարձնելով ձեր օգտատերերի փորձը նույնքան անխափան, որքան doggo meme էջը պտտելը:

Այսպիսով, հաջորդ անգամ, երբ պատրաստում եք վեբ հավելված, մի մոռացեք ավելացնել Cache-Control-ի մի տող: Դա պարզապես կարող է լինել այն գաղտնի բաղադրիչը, որը ձեզ անհրաժեշտ է, որպեսզի ձեր հավելվածը սեղմվի Flash-ի պես, այլ ոչ թե մեր խեղճ Կրիայի պես թափառեք:

Լրացուցիչ բովանդակություն shubhamgautamlog.medium.com կայքում: Միացեք ինձ հետ Twitter, Linkedinև կիսվեք նաև այն :)



https://shubhamgautamlog.medium.com/top-frontend-build-tools-to-use-in-2023-d890b2ce1908