Cross Origin Storage API: ഫയലുകൾ രണ്ടുതവണ ഡൗൺലോഡ് ചെയ്യുന്നത് ഒഴിവാക്കാം

Cross-Origin Storage API ഉപയോഗിക്കുന്നതിലൂടെ രണ്ട് വെബ്‌സൈറ്റുകൾക്കിടയിൽ 33 GB വലിപ്പമുള്ള ഒരു AI മോഡൽ പങ്കിടാൻ ബ്രൗസറുകൾക്ക് സാധിക്കും. ഇത് നിങ്ങൾ ഡൗൺലോഡ് ചെയ്യേണ്ട ഡാറ്റ 66 GB-യിൽ നിന്ന് 33 GB ആയി കുറയ്ക്കുന്നു.

മുമ്പ്, ഒരു സൈറ്റ് നേരത്തെ ഡൗൺലോഡ് ചെയ്ത ഫയലുകൾ മറ്റ് സൈറ്റുകൾക്കും വീണ്ടും ഉപയോഗിക്കാൻ ബ്രൗസറുകൾ അനുവദിച്ചിരുന്നു. ഉദാഹരണത്തിന്, ഒരു CDN-ൽ നിന്ന് ഒരേ React bundle രണ്ട് പേജുകളിൽ ലോഡ് ചെയ്യുമ്പോൾ, രണ്ടാമത്തെ തവണ ബ്രൗസർ കാഷെ ചെയ്ത (cached) കോപ്പി തന്നെ നൽകുന്നു. എന്നാൽ സ്വകാര്യത മുൻനിർത്തിയുള്ള ചില മാറ്റങ്ങൾ ഈ സൗകര്യം ഇല്ലാതാക്കി: ഇപ്പോൾ ബ്രൗസറുകൾ ഓരോ സൈറ്റിനും പ്രത്യേകമായി കാഷെകൾ വിഭജിക്കുന്നു (partition), അതിനാൽ ഒരേ URL ആണെങ്കിൽ പോലും ഓരോ ഒറിജിനും (origin) അവ പ്രത്യേകം സംഭരിക്കപ്പെടുന്നു. ഇതിന്റെ ഫലമായി, ഒന്നിലധികം സൈറ്റുകളിൽ കാണപ്പെടുന്ന വലിയ ഫയലുകൾ ഓരോ തവണയും വീണ്ടും ഡൗൺലോഡ് ചെയ്യേണ്ടി വരുന്നു.

എന്തുകൊണ്ടാണ് ഈ ഡ്യൂപ്ലിക്കേറ്റ് ഡൗൺലോഡ് പ്രശ്നം ഇപ്പോൾ പ്രസക്തമാകുന്നത്

വെബ് ഫോണ്ടുകൾ അല്ലെങ്കിൽ ഏതാനും മെഗാബൈറ്റ് വരുന്ന ജാവാസ്ക്രിപ്റ്റ് (JavaScript) പോലുള്ള ചെറിയ ഫയലുകളിൽ ഈ പാഴാകൽ കുറവാണെങ്കിലും, ഒരു മൾട്ടി-ഗിഗാബൈറ്റ് AI മോഡലോ അല്ലെങ്കിൽ ഒരു WebAssembly മോഡ്യൂളോ ആണ് ഡൗൺലോഡ് ചെയ്യേണ്ടതെങ്കിൽ ഇത് വലിയൊരു പ്രശ്നമായി മാറുന്നു.

Cross-Origin Storage (COS) API എങ്ങനെ പ്രവർത്തിക്കുന്നു

ഈ നിർദ്ദേശം URL അടിസ്ഥാനമാക്കിയുള്ള തിരച്ചിലിന് പകരം കണ്ടന്റ് അധിഷ്ഠിതമായ (content-addressed) ഒരു രീതിയാണ് ഉപയോഗിക്കുന്നത്. ഒരു സൈറ്റ് തനിക്ക് ആവശ്യമുള്ള ഫയലിന്റെ SHA-256 ഹാഷ് നൽകുന്നു. ഏത് സൈറ്റാണ് ആ ഫയൽ ആദ്യം ഡൗൺലോഡ് ചെയ്തതെന്ന കാര്യം പരിഗണിക്കാതെ തന്നെ, ബ്രൗസർ അതിന്റെ ലോക്കൽ സ്റ്റോറിൽ ആ ഹാഷ് ഉണ്ടോ എന്ന് പരിശോധിക്കുന്നു. ഫയൽ ഉണ്ടെങ്കിൽ ബ്രൗസർ അത് നൽകുന്നു; ഇല്ലെങ്കിൽ, ബ്രൗസർ നെറ്റ്‌വർക്കിൽ നിന്ന് ഫയൽ ഡൗൺലോഡ് ചെയ്യുകയും ഭാവിയിൽ മറ്റ് സൈറ്റുകൾക്ക് ഉപയോഗിക്കാൻ വേണ്ടി ആ ഹാഷിന് കീഴിൽ അത് സംഭരിക്കുകയും ചെയ്യുന്നു.

  • ഹാഷ് ഉപയോഗിച്ചുള്ള തിരിച്ചറിയൽ. ഹാഷ് എന്നത് ഫയലിന്റെ ലൊക്കേഷനെ അല്ല, മറിച്ച് അതിലെ ബൈറ്റുകളെയാണ് (bytes) സൂചിപ്പിക്കുന്നത്.
  • ക്രോസ്-ഒറിജിൻ ആക്സസ്. ഹാഷ് അറിയാവുന്ന ഏതൊരു സൈറ്റിനും ആ ഫയൽ ആവശ്യപ്പെടാം, അത് മറ്റൊരു സൈറ്റിൽ നിന്ന് വന്നതാണെങ്കിൽ പോലും.
  • ലോക്കൽ കാഷെ പങ്കിടൽ. ഒരേ ഫയൽ കോപ്പി തന്നെ ഒന്നിലധികം ആവശ്യങ്ങൾക്കായി ഉപയോഗിക്കാം.

ഈ API വളരെ പരിമിതമായ ആവശ്യങ്ങൾക്കായി മാത്രം രൂപകൽപ്പന ചെയ്തതാണ്: ഇത് നിലവിലുള്ള Cache API-യെയോ IndexedDB-യെയോ മാറ്റിസ്ഥാപിക്കുന്നില്ല. അവ പൊതുവായ സ്റ്റോറേജ് ആവശ്യങ്ങൾക്കായി തുടരും; എന്നാൽ COS എന്നത് വലിയതും ഒരേപോലെയുള്ളതുമായ ഫയലുകൾക്കായി (blobs) മാത്രം ഉപയോഗിക്കാവുന്ന ഒരു ഷോർട്ട്കട്ട് ആണ്.

രൂപകൽപ്പനയിൽ ഉൾപ്പെടുത്തിയിട്ടുള്ള സ്വകാര്യതാ സുരക്ഷാ സംവിധാനങ്ങൾ

സൈറ്റുകൾക്ക് ഉപയോക്താവിന്റെ കാഷെ പരിശോധിക്കാൻ അനുമതി നൽകുന്നത്, കാഷെ പാർട്ടിഷനിംഗ് തടയാൻ ശ്രമിച്ച ട്രാക്കിംഗ് രീതികൾ വീണ്ടും വരാൻ കാരണമായേക്കാം. COS മൂന്ന് നിയമങ്ങളിലൂടെ ഈ അപകടസാധ്യത ഒഴിവാക്കുന്നു:

  1. എന്യൂമറേഷൻ ഇല്ല (No enumeration). "നിങ്ങളുടെ പക്കൽ ഏതൊക്കെ ഹാഷുകൾ ഉണ്ട്?" എന്ന് സ്ക്രിപ്റ്റുകൾക്ക് ചോദിക്കാൻ കഴിയില്ല—സ്റ്റോറേജ് എന്നത് രഹസ്യമായി (opaque) സൂക്ഷിക്കപ്പെടുന്നു.
  2. ഹാഷ് അറിഞ്ഞിരിക്കണം. ഒരു സൈറ്റിന് ഫയൽ ആവശ്യപ്പെടണമെങ്കിൽ അതിന്റെ കൃത്യമായ ഹാഷ് അറിയണം. മുൻകൂട്ടി അറിയാതെ വെറുതെ പരിശോധിക്കുന്നത് (random probing) ഇതിലൂടെ അസാധ്യമാണ്.
  3. ആഗോള ആക്സസിനായി ജനപ്രിയത ആവശ്യമാണ്. മറ്റൊരു സൈറ്റിന് ഒരു ഫയൽ ഡൗൺലോഡ് ചെയ്യണമെങ്കിൽ, ആ ഫയൽ ആവശ്യത്തിന് സാധാരണമായ ഒന്നായിരിക്കണം (അതായത്, "അനോനിമസ്"). അപൂർവ്വമായ ഫയലുകൾ അവ ആദ്യമായി ഡൗൺലോഡ് ചെയ്ത സൈറ്റിൽ മാത്രം പരിമിതമായിരിക്കും.

ഈ നിയന്ത്രണങ്ങൾ വഴി, ഫിംഗർപ്രിന്റിംഗിനായുള്ള (fingerprinting) ഒരു മാർഗ്ഗമായി മാറാതെ തന്നെ, യഥാർത്ഥത്തിൽ പങ്കിടേണ്ട ഫയലുകൾക്കായി API ഉപയോഗപ്രദമായി നിലനിർത്തുന്നു.

ഇനി എന്താണ് ശ്രദ്ധിക്കേണ്ടത്

ബ്രൗസറുകളിലെ വലിയ ഫയലുകളുടെ ഉപയോഗം വർദ്ധിച്ചതോടെ ഉണ്ടായ ഒരു പ്രശ്നത്തിന് Cross-Origin Storage API ലളിതമായ ഒരു പരിഹാരം നൽകുന്നു. കാഷെ പാർട്ടിഷനിംഗിന് പിന്നിലെ സ്വകാര്യതാ ഉറപ്പുകളും ബാൻഡ്‌വിഡ്ത്ത് കാര്യക്ഷമതയും തമ്മിൽ സന്തുലിതമായി നിലനിർത്താൻ വെബ് കമ്മ്യൂണിറ്റിക്ക് സാധിക്കുമോ എന്നതിനെ ആശ്രയിച്ചിരിക്കും ഈ ആശയം ഒരു ഡ്രാഫ്റ്റ് ഘട്ടത്തിൽ നിന്ന് മുന്നോട്ട് പോകുമോ എന്നത്. അങ്ങനെ സംഭവിച്ചാൽ, ഭാവിയിലെ ബ്രൗസറുകൾ വഴി 30 GB-യിലധികം വലിപ്പമുള്ള ഒരു AI മോഡൽ ഒരിക്കൽ മാത്രം ഡൗൺലോഡ് ചെയ്ത് എല്ലായിടത്തും ഉപയോഗിക്കാൻ സാധിക്കും—ഇത് സമയം, ഡാറ്റ, ഊർജ്ജം എന്നിവ ലാഭിക്കാൻ സഹായിക്കും.