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 കോൺഫിഗറേഷനിലേക്ക് നേരിട്ട് പകർത്തുക.