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 கட்டமைப்பில் நேரடியாக நகலெடுக்கவும்.