HTTP కేష్-కంట్రోల్ హెడర్ కాలిక్యులేటర్
Cache-Control HTTP హెడర్ బ్రౌజర్లు, ప్రాక్సీలు, CDNలకు ఒక రెస్పాన్స్ను ఎలా - ఎంతసేపు - కేష్ చేయవచ్చో తెలియజేస్తుంది. దీన్ని తప్పుగా సెట్ చేయడం వల్ల యూజర్లకు పాత (stale) కంటెంట్ కనిపించడం లేదా కేష్ నుండి అందించాల్సిన రిక్వెస్ట్లు నేరుగా సర్వర్కు వెళ్లడం జరుగుతుంది. ఈ టూల్ కొన్ని సాధారణ ఎంపికల నుండి సరైన Cache-Control హెడర్ను నిర్మించి, ప్రతి డైరెక్టివ్ అర్థాన్ని వివరిస్తుంది.
Cache-Control అంటే ఏమిటి?
RFC 9111 (HTTP Caching స్పెసిఫికేషన్) నిర్వచించిన రెస్పాన్స్ హెడర్ Cache-Control. ఒక సాధారణ విలువ ఇలా ఉంటుంది:
Cache-Control: public, max-age=3600, s-maxage=600, stale-while-revalidate=86400
కామాతో వేరు చేయబడిన ప్రతి భాగం ఒక డైరెక్టివ్. కొన్నింటికి సంఖ్యా విలువ ఉంటుంది (max-age=3600 వంటివి), కొన్ని కేవలం ఫ్లాగ్లు (must-revalidate వంటివి).
ఈ కాలిక్యులేటర్ కవర్ చేసే డైరెక్టివ్లు
- కేషబిలిటీ - వీటిలో సరిగ్గా ఒకటి:
public- ఏ కేష్ అయినా (బ్రౌజర్, ప్రాక్సీ, CDN) రెస్పాన్స్ను నిల్వ చేయవచ్చు.private- యూజర్ బ్రౌజర్ మాత్రమే దీన్ని కేష్ చేయగలదు; CDN వంటి షేర్డ్ కేష్లు చేయకూడదు.no-cache- కేష్ నిల్వ చేయవచ్చు, కానీ ఉపయోగించే ముందు ప్రతిసారీ సర్వర్తో రీవాలిడేట్ చేయాలి.no-store- ఏదీ కేష్ చేయబడదు; ప్రతి రిక్వెస్ట్ నేరుగా ఆరిజిన్ సర్వర్కు వెళుతుంది.
max-age=<సెకన్లు>- రెస్పాన్స్ సృష్టించిన క్షణం నుండి ఎంతసేపు ఫ్రెష్గా పరిగణించబడుతుంది.s-maxage=<సెకన్లు>-max-ageలాగే, కానీ షేర్డ్ కేష్లకు (CDN, రివర్స్ ప్రాక్సీ) మాత్రమే వర్తిస్తుంది; బ్రౌజర్లు దీన్ని విస్మరిస్తాయి.stale-while-revalidate=<సెకన్లు>- ఫ్రెష్నెస్ ముగిసిన తర్వాత, బ్యాక్గ్రౌండ్లో కొత్తది తెచ్చేటప్పుడు ఈ అదనపు సెకన్ల వరకు కేష్ పాత కాపీని అందించవచ్చు.stale-if-error=<సెకన్లు>- రీవాలిడేషన్ సమయంలో ఆరిజిన్ సర్వర్ ఎర్రర్ ఇస్తే, ఎర్రర్ చూపించే బదులు ఈ సెకన్ల వరకు పాత కాపీని అందించవచ్చు.must-revalidate- ఒకసారి స్టేల్ అయిన తర్వాత, విజయవంతమైన రీవాలిడేషన్ లేకుండా మళ్లీ అందించకూడదు.immutable- ఫ్రెష్గా ఉన్నంత కాలం రెస్పాన్స్ బాడీ ఎప్పటికీ మారదని బ్రౌజర్కు తెలియజేస్తుంది, కాబట్టి రీలోడ్లో కూడా రీవాలిడేషన్ అవసరం లేదు.no-transform- మధ్యలో ఉన్న ప్రాక్సీలు రెస్పాన్స్ బాడీని మార్చకుండా (ఇమేజ్లను మళ్లీ కంప్రెస్ చేయడం వంటివి) నిరోధిస్తుంది.
ఈ కాలిక్యులేటర్ ఎలా పని చేస్తుంది
CDN వంటి షేర్డ్ కేష్లకు, s-maxage (ఉంటే) ఎల్లప్పుడూ max-age కంటే ప్రాధాన్యత పొందుతుంది; బ్రౌజర్లు s-maxageను పూర్తిగా విస్మరించి కేవలం max-ageను మాత్రమే చూస్తాయి. కాలిక్యులేటర్ సరైన క్రమంలో (మొదట కేషబిలిటీ రకం, తర్వాత సంఖ్యా డైరెక్టివ్లు, చివరగా బూలియన్ ఫ్లాగ్లు) హెడర్ స్ట్రింగ్ను నిర్మిస్తుంది, సున్నా/ఆఫ్గా ఉన్నవాటిని వదిలివేస్తుంది, ఫలిత వ్యవధిని సెకన్లు, నిమిషాలు, గంటలు, రోజులుగా విభజించి చూపిస్తుంది.
ఒక ఉదాహరణ
CDN ద్వారా అందించే, ప్రచురించిన తర్వాత ఎప్పటికీ మారని వెర్షన్డ్ స్టాటిక్ ఫైల్ (app.a1b2c3.js వంటిది) మీరు అందిస్తున్నారని అనుకుందాం:
- కేష్ రకం:
public - Max-Age:
31536000(1 సంవత్సరం) - s-maxage:
0(అవసరం లేదు) - Immutable:
Yes
ఇది దీన్ని ఉత్పత్తి చేస్తుంది:
Cache-Control: public, max-age=31536000, immutable
బ్రౌజర్లు ఈ ఫైల్ను పూర్తి సంవత్సరం కేష్ చేసి, ఎప్పటికీ మళ్లీ తనిఖీ చేయవు.
ఈ టూల్ను ఎలా ఉపయోగించాలి
- కేషబిలిటీ రకాన్ని ఎంచుకోండి (
public,private,no-cache, లేదాno-store). Max-Ageను సెకన్లలో నమోదు చేయండి (వదిలివేయడానికి0గా ఉంచండి).- అవసరమైతే
s-maxage,stale-while-revalidate,stale-if-errorలను సెట్ చేయండి. must-revalidate,immutable,no-transformలను అవసరాన్ని బట్టి మార్చండి.- ఉత్పత్తి అయిన హెడర్ విలువను నేరుగా మీ సర్వర్, రివర్స్ ప్రాక్సీ, లేదా CDN కాన్ఫిగరేషన్లో వాడండి.