chrome.storage

বর্ণনা

ব্যবহারকারীর ডেটা সংরক্ষণ, পুনরুদ্ধার এবং পরিবর্তনগুলি ট্র্যাক করতে chrome.storage API ব্যবহার করুন৷

অনুমতি

storage

স্টোরেজ API ব্যবহার করতে, এক্সটেনশন ম্যানিফেস্টে "storage" অনুমতি ঘোষণা করুন৷ যেমন:

{
  "name": "My extension",
  ...
  "permissions": [
    "storage"
  ],
  ...
}

ধারণা এবং ব্যবহার

স্টোরেজ API ব্যবহারকারীর ডেটা এবং স্থিতি বজায় রাখার জন্য একটি এক্সটেনশন-নির্দিষ্ট উপায় প্রদান করে। এটি ওয়েব প্ল্যাটফর্মের স্টোরেজ এপিআই ( IndexedDB , এবং Storage ) এর মতো, কিন্তু এক্সটেনশনের স্টোরেজ চাহিদা মেটাতে ডিজাইন করা হয়েছে। নিম্নলিখিত কয়েকটি মূল বৈশিষ্ট্য রয়েছে:

  • এক্সটেনশন পরিষেবা কর্মী এবং বিষয়বস্তু স্ক্রিপ্ট সহ সমস্ত এক্সটেনশন প্রসঙ্গগুলির স্টোরেজ API-তে অ্যাক্সেস রয়েছে৷
  • JSON ক্রমিক মানগুলি বস্তুর বৈশিষ্ট্য হিসাবে সংরক্ষণ করা হয়।
  • স্টোরেজ API বাল্ক রিড এবং রাইট অপারেশন সহ অ্যাসিঙ্ক্রোনাস।
  • এমনকি ব্যবহারকারী ক্যাশে এবং ব্রাউজিং ইতিহাস সাফ করলেও, ডেটা টিকে থাকে।
  • বিভক্ত ছদ্মবেশী ব্যবহার করার সময়ও সঞ্চিত সেটিংস বজায় থাকে।
  • এন্টারপ্রাইজ নীতির জন্য একটি একচেটিয়া-পঠন- পরিচালিত স্টোরেজ এলাকা অন্তর্ভুক্ত করে।

এক্সটেনশনগুলি কি ওয়েব স্টোরেজ API ব্যবহার করতে পারে?

যদিও এক্সটেনশনগুলি Storage ইন্টারফেস ব্যবহার করতে পারে ( window.localStorage থেকে অ্যাক্সেসযোগ্য) কিছু প্রসঙ্গে (পপআপ এবং অন্যান্য HTML পৃষ্ঠা), আমরা নিম্নলিখিত কারণগুলির জন্য এটি সুপারিশ করি না:

  • এক্সটেনশন পরিষেবা কর্মীরা ওয়েব স্টোরেজ API ব্যবহার করতে পারবেন না।
  • কন্টেন্ট স্ক্রিপ্ট হোস্ট পৃষ্ঠার সাথে স্টোরেজ শেয়ার করে।
  • যখন ব্যবহারকারী তাদের ব্রাউজিং ইতিহাস সাফ করে তখন ওয়েব স্টোরেজ API ব্যবহার করে সংরক্ষিত ডেটা হারিয়ে যায়।

একটি পরিষেবা কর্মী থেকে ওয়েব স্টোরেজ API থেকে এক্সটেনশন স্টোরেজ APIগুলিতে ডেটা স্থানান্তর করতে:

  1. একটি অফস্ক্রিন ডকুমেন্ট এইচটিএমএল পেজ এবং স্ক্রিপ্ট ফাইল প্রস্তুত করুন। স্ক্রিপ্ট ফাইলে একটি রূপান্তর রুটিন এবং একটি onMessage হ্যান্ডলার থাকা উচিত৷
  2. এক্সটেনশন পরিষেবা কর্মীর মধ্যে, আপনার ডেটার জন্য chrome.storage চেক করুন৷
  3. আপনার ডেটা পাওয়া না গেলে, createDocument() কল করুন।
  4. ফিরে আসা প্রতিশ্রুতি সমাধানের পরে, রূপান্তর রুটিন শুরু করতে sendMessage() এ কল করুন।
  5. অফস্ক্রিন নথির onMessage হ্যান্ডলারের ভিতরে, রূপান্তর রুটিন কল করুন।

ওয়েব স্টোরেজ API কিভাবে এক্সটেনশনে কাজ করে তার কিছু সূক্ষ্মতা রয়েছে। স্টোরেজ এবং কুকিজ নিবন্ধে আরও জানুন।

স্টোরেজ এলাকা

স্টোরেজ API নিম্নলিখিত স্টোরেজ এলাকায় বিভক্ত:

storage.local
ডেটা স্থানীয়ভাবে সংরক্ষণ করা হয় এবং এক্সটেনশন সরানো হলে সাফ করা হয়। স্টোরেজ সীমা 10 MB (Chrome 113 এবং তার আগের 5 MB), কিন্তু "unlimitedStorage" অনুমতির অনুরোধ করে বাড়ানো যেতে পারে৷ আমরা বেশি পরিমাণে ডেটা সঞ্চয় করতে storage.local ব্যবহার করার পরামর্শ দিই।
storage.managed
পরিচালিত সঞ্চয়স্থান হল পলিসি ইনস্টল করা এক্সটেনশনগুলির জন্য শুধুমাত্র পঠনযোগ্য সঞ্চয়স্থান এবং একটি বিকাশকারী-সংজ্ঞায়িত স্কিমা এবং এন্টারপ্রাইজ নীতিগুলি ব্যবহার করে সিস্টেম অ্যাডমিনিস্ট্রেটরদের দ্বারা পরিচালিত৷ নীতিগুলি বিকল্পগুলির সাথে সাদৃশ্যপূর্ণ কিন্তু ব্যবহারকারীর পরিবর্তে একটি সিস্টেম অ্যাডমিনিস্ট্রেটর দ্বারা কনফিগার করা হয়, যা একটি সংস্থার সমস্ত ব্যবহারকারীর জন্য এক্সটেনশনটিকে পূর্বে কনফিগার করার অনুমতি দেয়৷ নীতির তথ্যের জন্য, প্রশাসকদের জন্য ডকুমেন্টেশন দেখুন। managed স্টোরেজ এলাকা সম্পর্কে আরও জানতে, স্টোরেজ এলাকার জন্য ম্যানিফেস্ট দেখুন।
storage.session
একটি ব্রাউজার সেশনের সময়কালের জন্য মেমরিতে ডেটা রাখে। ডিফল্টরূপে, এটি বিষয়বস্তু স্ক্রিপ্টের সংস্পর্শে আসে না, তবে chrome.storage.session.setAccessLevel() সেট করে এই আচরণ পরিবর্তন করা যেতে পারে। স্টোরেজ সীমা হল 10 MB (Chrome 111 এবং তার আগের 1 MB)। storage.session ইন্টারফেসটি আমরা পরিষেবা কর্মীদের জন্য সুপারিশ করি এমন কয়েকটির মধ্যে একটি।
storage.sync
সিঙ্কিং সক্ষম করা থাকলে, ব্যবহারকারী লগ ইন করা যেকোনো Chrome ব্রাউজারে ডেটা সিঙ্ক করা হয়। অক্ষম হলে, এটি storage.local মতো আচরণ করে। যখন ব্রাউজার অফলাইন থাকে তখন Chrome স্থানীয়ভাবে ডেটা সঞ্চয় করে এবং আবার অনলাইন হলে সিঙ্ক করা শুরু করে৷ কোটার সীমাবদ্ধতা প্রায় 100 KB, প্রতি আইটেম 8 KB। আমরা সিঙ্ক করা ব্রাউজার জুড়ে ব্যবহারকারীর সেটিংস সংরক্ষণ করতে storage.sync ব্যবহার করার পরামর্শ দিই। আপনি যদি ব্যবহারকারীর সংবেদনশীল ডেটা নিয়ে কাজ করেন, তবে পরিবর্তে storage.session ব্যবহার করুন।

স্টোরেজ এবং থ্রটলিং সীমা

স্টোরেজ API-এর নিম্নলিখিত ব্যবহারের সীমাবদ্ধতা রয়েছে:

  • ডেটা সঞ্চয় করা প্রায়শই পারফরম্যান্স খরচের সাথে আসে এবং এপিআই স্টোরেজ কোটা অন্তর্ভুক্ত করে। আপনি কোন ডেটা সঞ্চয় করেন সে সম্পর্কে আমরা সতর্ক থাকার পরামর্শ দিই যাতে আপনি ডেটা সঞ্চয় করার ক্ষমতা হারাবেন না৷
  • স্টোরেজ সম্পূর্ণ হতে সময় লাগতে পারে। সেই সময়ের জন্য অ্যাকাউন্টে আপনার কোড গঠন নিশ্চিত করুন।

স্টোরেজ এলাকার সীমাবদ্ধতা এবং সেগুলি অতিক্রম করলে কী ঘটে তার বিশদ বিবরণের জন্য, sync , local এবং session জন্য কোটা তথ্য দেখুন৷

কেস ব্যবহার করুন

নিম্নলিখিত বিভাগগুলি স্টোরেজ API-এর জন্য সাধারণ ব্যবহারের ক্ষেত্রে প্রদর্শন করে।

স্টোরেজ আপডেটের সিঙ্ক্রোনাস প্রতিক্রিয়া

সঞ্চয়স্থানে করা পরিবর্তনগুলি ট্র্যাক করতে, এর onChanged ইভেন্টে একজন শ্রোতা যোগ করুন৷ সঞ্চয়স্থানে কিছু পরিবর্তন হলে, সেই ইভেন্টটি আগুন হয়ে যায়। নমুনা কোড এই পরিবর্তনগুলির জন্য শোনে:

background.js:

chrome.storage.onChanged.addListener((changes, namespace) => {
  for (let [key, { oldValue, newValue }] of Object.entries(changes)) {
    console.log(
      `Storage key "${key}" in namespace "${namespace}" changed.`,
      `Old value was "${oldValue}", new value is "${newValue}".`
    );
  }
});

আমরা এই ধারণাটিকে আরও এগিয়ে নিতে পারি। এই উদাহরণে, আমাদের কাছে একটি বিকল্প পৃষ্ঠা রয়েছে যা ব্যবহারকারীকে একটি "ডিবাগ মোড" টগল করতে দেয় (বাস্তবায়ন এখানে দেখানো হয়নি)। বিকল্প পৃষ্ঠাটি অবিলম্বে storage.sync এ নতুন সেটিংস সংরক্ষণ করে এবং যত তাড়াতাড়ি সম্ভব সেটিং প্রয়োগ করতে পরিষেবা কর্মী storage.onChanged ব্যবহার করে৷

options.html:

<!-- type="module" allows you to use top level await -->
<script defer src="options.js" type="module"></script>
<form id="optionsForm">
  <label for="debug">
    <input type="checkbox" name="debug" id="debug">
    Enable debug mode
  </label>
</form>

options.js:

// In-page cache of the user's options
const options = {};
const optionsForm = document.getElementById("optionsForm");

// Immediately persist options changes
optionsForm.debug.addEventListener("change", (event) => {
  options.debug = event.target.checked;
  chrome.storage.sync.set({ options });
});

// Initialize the form with the user's option settings
const data = await chrome.storage.sync.get("options");
Object.assign(options, data.options);
optionsForm.debug.checked = Boolean(options.debug);

background.js:

function setDebugMode() { /* ... */ }

// Watch for changes to the user's options & apply them
chrome.storage.onChanged.addListener((changes, area) => {
  if (area === 'sync' && changes.options?.newValue) {
    const debugMode = Boolean(changes.options.newValue.debug);
    console.log('enable debug mode?', debugMode);
    setDebugMode(debugMode);
  }
});

স্টোরেজ থেকে অ্যাসিঙ্ক্রোনাস প্রিলোড

যেহেতু পরিষেবা কর্মীরা সব সময় চালায় না, ম্যানিফেস্ট V3 এক্সটেনশনগুলিকে কখনও কখনও তাদের ইভেন্ট হ্যান্ডলারগুলি চালানোর আগে স্টোরেজ থেকে অসিঙ্ক্রোনাসভাবে ডেটা লোড করতে হয়। এটি করার জন্য, নিম্নলিখিত স্নিপেটটি একটি async action.onClicked ইভেন্ট হ্যান্ডলার ব্যবহার করে যেটি storageCache গ্লোবাল এর লজিক কার্যকর করার আগে পপুলেট হওয়ার জন্য অপেক্ষা করে।

background.js:

// Where we will expose all the data we retrieve from storage.sync.
const storageCache = { count: 0 };
// Asynchronously retrieve data from storage.sync, then cache it.
const initStorageCache = chrome.storage.sync.get().then((items) => {
  // Copy the data retrieved from storage into storageCache.
  Object.assign(storageCache, items);
});

chrome.action.onClicked.addListener(async (tab) => {
  try {
    await initStorageCache;
  } catch (e) {
    // Handle error that occurred during storage initialization.
  }

  // Normal action handler logic.
  storageCache.count++;
  storageCache.lastTabId = tab.id;
  chrome.storage.sync.set(storageCache);
});

উদাহরণ

নিম্নলিখিত নমুনাগুলি local , sync , এবং session স্টোরেজ এলাকাগুলি প্রদর্শন করে:

স্থানীয়

chrome.storage.local.set({ key: value }).then(() => {
  console.log("Value is set");
});

chrome.storage.local.get(["key"]).then((result) => {
  console.log("Value is " + result.key);
});

সিঙ্ক

chrome.storage.sync.set({ key: value }).then(() => {
  console.log("Value is set");
});

chrome.storage.sync.get(["key"]).then((result) => {
  console.log("Value is " + result.key);
});

অধিবেশন

chrome.storage.session.set({ key: value }).then(() => {
  console.log("Value was set");
});

chrome.storage.session.get(["key"]).then((result) => {
  console.log("Value is " + result.key);
});

স্টোরেজ API-এর অন্যান্য ডেমো দেখতে, নিম্নলিখিত নমুনাগুলির মধ্যে যেকোনো একটি অন্বেষণ করুন:

প্রকারভেদ

AccessLevel

Chrome 102+

স্টোরেজ এলাকার অ্যাক্সেস লেভেল।

এনাম

"TRUSTED_CONTEXTS"
এক্সটেনশন থেকে উদ্ভূত প্রসঙ্গগুলি নির্দিষ্ট করে৷

"TRUSTED_AND_UNTRUSTED_CONTEXTS"
এক্সটেনশনের বাইরে থেকে উদ্ভূত প্রসঙ্গগুলি নির্দিষ্ট করে৷

StorageArea

বৈশিষ্ট্য

  • পরিবর্তন করা হয়েছে

    ইভেন্ট<functionvoidvoid>

    Chrome 73+

    এক বা একাধিক আইটেম পরিবর্তন হলে বহিস্কার করা হয়।

    onChanged.addListener ফাংশনটি এরকম দেখাচ্ছে:

    (callback: function) => {...}

    • কলব্যাক

      ফাংশন

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      (changes: object) => void

      • পরিবর্তন

        বস্তু

  • পরিষ্কার

    অকার্যকর

    প্রতিশ্রুতি

    সঞ্চয়স্থান থেকে সমস্ত আইটেম সরান.

    clear ফাংশন মত দেখায়:

    (callback?: function) => {...}

    • কলব্যাক

      ফাংশন ঐচ্ছিক

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      () => void

    • রিটার্ন

      প্রতিশ্রুতি <void>

      Chrome 88+

      প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

  • পেতে

    অকার্যকর

    প্রতিশ্রুতি

    স্টোরেজ থেকে এক বা একাধিক আইটেম পায়।

    get ফাংশনটি এরকম দেখাচ্ছে:

    (keys?: string | string[] | object, callback?: function) => {...}

    • কী

      স্ট্রিং | স্ট্রিং[] | বস্তু ঐচ্ছিক

      পেতে একটি একক কী, পেতে কীগুলির তালিকা, বা ডিফল্ট মান নির্দিষ্ট করে একটি অভিধান (বস্তুর বিবরণ দেখুন)। একটি খালি তালিকা বা বস্তু একটি খালি ফলাফল বস্তু প্রদান করবে। স্টোরেজের সম্পূর্ণ বিষয়বস্তু পেতে null পাস করুন।

    • কলব্যাক

      ফাংশন ঐচ্ছিক

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      (items: object) => void

      • আইটেম

        বস্তু

        তাদের কী-মান ম্যাপিং-এ আইটেম সহ অবজেক্ট করুন।

    • রিটার্ন

      প্রতিশ্রুতি<object>

      Chrome 88+

      প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

  • getBytesInUse

    অকার্যকর

    প্রতিশ্রুতি

    এক বা একাধিক আইটেম দ্বারা ব্যবহৃত স্থানের পরিমাণ (বাইটে) পায়।

    getBytesInUse ফাংশনটি এরকম দেখাচ্ছে:

    (keys?: string | string[], callback?: function) => {...}

    • কী

      স্ট্রিং | স্ট্রিং[] ঐচ্ছিক

      মোট ব্যবহার পেতে একটি একক কী বা কীগুলির তালিকা৷ একটি খালি তালিকা 0 প্রদান করবে। সমস্ত স্টোরেজের মোট ব্যবহার পেতে null পাস করুন।

    • কলব্যাক

      ফাংশন ঐচ্ছিক

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      (bytesInUse: number) => void

      • bytesInUse

        সংখ্যা

        সঞ্চয়স্থানে ব্যবহৃত স্থানের পরিমাণ, বাইটে।

    • রিটার্ন

      প্রতিশ্রুতি <সংখ্যা>

      Chrome 88+

      প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

  • getKeys

    অকার্যকর

    প্রতিশ্রুতি Chrome 130+

    স্টোরেজ থেকে সব কী পায়।

    getKeys ফাংশন এর মত দেখাচ্ছে:

    (callback?: function) => {...}

    • কলব্যাক

      ফাংশন ঐচ্ছিক

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      (keys: string[]) => void

      • কী

        স্ট্রিং[]

        স্টোরেজ থেকে পড়া কী সহ অ্যারে।

    • রিটার্ন

      প্রতিশ্রুতি<string[]>

      প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

  • অপসারণ

    অকার্যকর

    প্রতিশ্রুতি

    স্টোরেজ থেকে এক বা একাধিক আইটেম সরিয়ে দেয়।

    remove ফাংশন এর মত দেখাচ্ছে:

    (keys: string | string[], callback?: function) => {...}

    • কী

      স্ট্রিং | স্ট্রিং[]

      সরানোর জন্য আইটেমগুলির জন্য একটি একক কী বা কীগুলির একটি তালিকা৷

    • কলব্যাক

      ফাংশন ঐচ্ছিক

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      () => void

    • রিটার্ন

      প্রতিশ্রুতি <void>

      Chrome 88+

      প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

  • সেট

    অকার্যকর

    প্রতিশ্রুতি

    একাধিক আইটেম সেট করে।

    set ফাংশন এর মত দেখাচ্ছে:

    (items: object, callback?: function) => {...}

    • আইটেম

      বস্তু

      একটি বস্তু যা স্টোরেজ আপডেট করতে প্রতিটি কী/মান জোড়া দেয়। সঞ্চয়স্থানে অন্য কোন কী/মান জোড়া প্রভাবিত হবে না।

      আদিম মান যেমন সংখ্যা প্রত্যাশিত হিসাবে ক্রমিক করা হবে. "object" এবং "function" typeof সহ মানগুলি সাধারণত {} তে সিরিয়াল করা হবে, Array (প্রত্যাশিত হিসাবে সিরিয়ালাইজ করা হয়), Date এবং Regex (তাদের String উপস্থাপনা ব্যবহার করে সিরিয়ালাইজ করা)।

    • কলব্যাক

      ফাংশন ঐচ্ছিক

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      () => void

    • রিটার্ন

      প্রতিশ্রুতি <void>

      Chrome 88+

      প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

  • সেট অ্যাকসেস লেভেল

    অকার্যকর

    প্রতিশ্রুতি Chrome 102+

    স্টোরেজ এলাকার জন্য পছন্দসই অ্যাক্সেস লেভেল সেট করে। ডিফল্ট শুধুমাত্র বিশ্বস্ত প্রসঙ্গ হবে.

    setAccessLevel ফাংশন এর মত দেখাচ্ছে:

    (accessOptions: object, callback?: function) => {...}

    • অ্যাক্সেস অপশন

      বস্তু

    • কলব্যাক

      ফাংশন ঐচ্ছিক

      callback প্যারামিটারটি এর মতো দেখাচ্ছে:

      () => void

    • রিটার্ন

      প্রতিশ্রুতি <void>

      প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

StorageChange

বৈশিষ্ট্য

  • নতুন মান

    যে কোন ঐচ্ছিক

    আইটেমের নতুন মান, নতুন মান থাকলে।

  • পুরানো মান

    যে কোন ঐচ্ছিক

    আইটেমের পুরানো মান, যদি একটি পুরানো মূল্য ছিল।

বৈশিষ্ট্য

local

local স্টোরেজ এলাকায় আইটেম প্রতিটি মেশিন স্থানীয় হয়.

টাইপ

স্টোরেজ এরিয়া এবং অবজেক্ট

বৈশিষ্ট্য

  • QUOTA_BYTES

    10485760

    প্রতিটি মানের এবং প্রতিটি কী এর দৈর্ঘ্যের JSON স্ট্রিংফিকেশন দ্বারা পরিমাপ করা ডেটার সর্বাধিক পরিমাণ (বাইটে) যা স্থানীয় স্টোরেজে সংরক্ষণ করা যেতে পারে। এই মান উপেক্ষা করা হবে যদি এক্সটেনশনের unlimitedStorage অনুমতি থাকে। যে আপডেটগুলি এই সীমা অতিক্রম করতে পারে তা অবিলম্বে ব্যর্থ হয় এবং একটি কলব্যাক ব্যবহার করার সময় runtime.lastError সেট করে, অথবা async/await ব্যবহার করলে একটি প্রত্যাখ্যাত প্রতিশ্রুতি।

managed

managed স্টোরেজ এলাকায় আইটেমগুলি ডোমেন প্রশাসক দ্বারা কনফিগার করা একটি এন্টারপ্রাইজ নীতি দ্বারা সেট করা হয় এবং এক্সটেনশনের জন্য শুধুমাত্র পঠনযোগ্য; এই নেমস্পেস পরিবর্তন করার চেষ্টা করলে একটি ত্রুটি দেখা দেয়। একটি নীতি কনফিগার করার তথ্যের জন্য, স্টোরেজ এলাকার জন্য ম্যানিফেস্ট দেখুন।

session

Chrome 102+ MV3+

session স্টোরেজ এলাকার আইটেমগুলি মেমরিতে সংরক্ষণ করা হয় এবং ডিস্কে স্থায়ী হবে না।

টাইপ

স্টোরেজ এরিয়া এবং অবজেক্ট

বৈশিষ্ট্য

  • QUOTA_BYTES

    10485760

    প্রতিটি মান এবং কী-এর গতিশীলভাবে বরাদ্দকৃত মেমরি ব্যবহার অনুমান করে পরিমাপ করে মেমরিতে যে ডেটা সংরক্ষণ করা যেতে পারে তার সর্বাধিক পরিমাণ (বাইটে)। যে আপডেটগুলি এই সীমা অতিক্রম করতে পারে তা অবিলম্বে ব্যর্থ হয় এবং একটি কলব্যাক ব্যবহার করার সময় runtime.lastError সেট করে, বা যখন একটি প্রতিশ্রুতি প্রত্যাখ্যান করা হয়।

sync

sync স্টোরেজ এলাকার আইটেমগুলি Chrome সিঙ্ক ব্যবহার করে সিঙ্ক করা হয়।

টাইপ

স্টোরেজ এরিয়া এবং অবজেক্ট

বৈশিষ্ট্য

  • MAX_ITEMS

    512

    সর্বাধিক সংখ্যক আইটেম যা সিঙ্ক সঞ্চয়স্থানে সংরক্ষণ করা যেতে পারে৷ যে আপডেটগুলি এই সীমা অতিক্রম করতে পারে সেগুলি অবিলম্বে ব্যর্থ হবে এবং একটি কলব্যাক ব্যবহার করার সময়, বা একটি প্রতিশ্রুতি প্রত্যাখ্যান করার সময় runtime.lastError সেট করবে৷

  • MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

    1000000

    অবচয়

    store.sync API-এ আর একটি স্থায়ী লেখা অপারেশন কোটা নেই৷

  • MAX_WRITE_OPERATIONS_PER_HOUR

    1800

    set , remove বা clear অপারেশনের সর্বাধিক সংখ্যা যা প্রতি ঘন্টায় সম্পাদিত হতে পারে। এটি প্রতি 2 সেকেন্ডে 1, স্বল্পমেয়াদী উচ্চ রাইটিং-প্রতি-মিনিট সীমার চেয়ে কম সিলিং।

    যে আপডেটগুলি এই সীমা অতিক্রম করতে পারে তা অবিলম্বে ব্যর্থ হয় এবং একটি কলব্যাক ব্যবহার করার সময় runtime.lastError সেট করে, বা যখন একটি প্রতিশ্রুতি প্রত্যাখ্যান করা হয়।

  • MAX_WRITE_OPERATIONS_PER_MINUTE

    120

    set , remove বা clear অপারেশনের সর্বোচ্চ সংখ্যা যা প্রতি মিনিটে সম্পাদিত হতে পারে। এটি প্রতি সেকেন্ডে 2, অল্প সময়ের জন্য প্রতি ঘন্টায় লেখার চেয়ে বেশি থ্রুপুট প্রদান করে।

    যে আপডেটগুলি এই সীমা অতিক্রম করতে পারে তা অবিলম্বে ব্যর্থ হয় এবং একটি কলব্যাক ব্যবহার করার সময় runtime.lastError সেট করে, বা যখন একটি প্রতিশ্রুতি প্রত্যাখ্যান করা হয়।

  • QUOTA_BYTES

    102400

    প্রতিটি মানের এবং প্রতিটি কী এর দৈর্ঘ্যের JSON স্ট্রিংফিকেশন দ্বারা পরিমাপ করা ডেটার সর্বাধিক মোট পরিমাণ (বাইটে) যা সিঙ্ক স্টোরেজে সংরক্ষণ করা যেতে পারে। যে আপডেটগুলি এই সীমা অতিক্রম করতে পারে তা অবিলম্বে ব্যর্থ হয় এবং একটি কলব্যাক ব্যবহার করার সময় runtime.lastError সেট করে, বা যখন একটি প্রতিশ্রুতি প্রত্যাখ্যান করা হয়।

  • QUOTA_BYTES_PER_ITEM

    8192

    সিঙ্ক সঞ্চয়স্থানে প্রতিটি পৃথক আইটেমের সর্বোচ্চ আকার (বাইটে), যেমন JSON এর মান এবং এর কী দৈর্ঘ্যের স্ট্রিংফিকেশন দ্বারা পরিমাপ করা হয়। এই সীমার চেয়ে বড় আইটেম ধারণকারী আপডেটগুলি অবিলম্বে ব্যর্থ হবে এবং একটি কলব্যাক ব্যবহার করার সময় runtime.lastError সেট করবে, বা যখন একটি প্রতিশ্রুতি প্রত্যাখ্যান করা হবে।

ঘটনা

onChanged

chrome.storage.onChanged.addListener(
  callback: function,
)

এক বা একাধিক আইটেম পরিবর্তন হলে বহিস্কার করা হয়।

পরামিতি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি এর মতো দেখাচ্ছে:

    (changes: object, areaName: string) => void

    • পরিবর্তন

      বস্তু

    • এলাকার নাম

      স্ট্রিং