chrome.storage

ब्यौरा

उपयोगकर्ता के डेटा में हुए बदलावों को सेव करने, वापस पाने, और ट्रैक करने के लिए, chrome.storage एपीआई का इस्तेमाल करें.

अनुमतियां

storage

खास जानकारी

Storage API, उपयोगकर्ता के डेटा और स्थिति को सेव करने के लिए, एक्सटेंशन के हिसाब से एक तरीका उपलब्ध कराता है. यह वेब प्लैटफ़ॉर्म के स्टोरेज एपीआई (IndexedDB और Storage) की तरह ही है. हालांकि, इसे एक्सटेंशन के स्टोरेज की ज़रूरतों को पूरा करने के लिए डिज़ाइन किया गया था. ये कुछ मुख्य सुविधाएं हैं:

  • एक्सटेंशन के सभी कॉन्टेक्स्ट, जैसे कि एक्सटेंशन सेवा वर्कर और कॉन्टेंट स्क्रिप्ट के पास, Storage API का ऐक्सेस होता है.
  • JSON में सीरियलाइज़ की जा सकने वाली वैल्यू, ऑब्जेक्ट प्रॉपर्टी के तौर पर सेव की जाती हैं.
  • Storage API, एक साथ कई फ़ाइलें पढ़ने और लिखने की सुविधा के साथ काम नहीं करता.
  • भले ही, उपयोगकर्ता कैश मेमोरी और ब्राउज़िंग इतिहास मिटा दे, लेकिन डेटा सेव रहता है.
  • सेव की गई सेटिंग, स्प्लिट गुप्त मोड का इस्तेमाल करने पर भी बनी रहती हैं.
  • इसमें एंटरप्राइज़ नीतियों के लिए, रीड-ओनली वाला खास मैनेज किया जाने वाला स्टोरेज शामिल होता है.

एक्सटेंशन, कुछ कॉन्टेक्स्ट (पॉप-अप और अन्य HTML पेज) में [Storage][mdn-storage] इंटरफ़ेस (window.localStorage से ऐक्सेस किया जा सकता है) का इस्तेमाल कर सकते हैं. हालांकि, इन वजहों से इसका सुझाव नहीं दिया जाता:

  • एक्सटेंशन का सर्विस वर्कर, Storage को ऐक्सेस नहीं कर सकता.
  • कॉन्टेंट स्क्रिप्ट, होस्ट पेज के साथ स्टोरेज शेयर करती हैं.
  • उपयोगकर्ता के अपना ब्राउज़िंग इतिहास मिटाने पर, Storage इंटरफ़ेस का इस्तेमाल करके सेव किया गया डेटा मिट जाता है.

सर्विस वर्कर से, डेटा को वेब स्टोरेज एपीआई से एक्सटेंशन स्टोरेज एपीआई में ले जाने के लिए:

  1. कन्वर्ज़न रूटीन और [onMessage][मैसेज पर] हैंडलर के साथ एक ऑफ़स्क्रीन दस्तावेज़ बनाएं.
  2. कन्वर्ज़न रूटीन को ऑफ़स्क्रीन दस्तावेज़ में जोड़ें.
  3. एक्सटेंशन सर्विस वर्कर में, अपने डेटा के लिए chrome.storage की जांच करें.
  4. अगर आपका डेटा नहीं मिलता है, तो एक ऑफ़स्क्रीन दस्तावेज़ [बनाएं][create-offscreen] पर सेट करें और कन्वर्ज़न रूटीन शुरू करने के लिए [sendMessage()][send-message] को कॉल करें.
  5. ऑफ़स्क्रीन दस्तावेज़ के onMessage हैंडलर में, कन्वर्ज़न रूटीन को कॉल करें.

एक्सटेंशन में वेब स्टोरेज एपीआई के काम करने के तरीके में भी कुछ मामूली अंतर हैं. ज़्यादा जानकारी के लिए इस लिंक पर जाएं [स्टोरेज और कुकी][स्टोरेज और कुकी] लेख.

स्टोरेज के लिए जगहें

Storage API को इन चार बकेट ("स्टोरेज एरिया") में बांटा गया है:

storage.local
डेटा को डिवाइस में सेव किया जाता है. एक्सटेंशन हटाने पर, डेटा मिट जाता है. कोटा करीब 10 एमबी का है, लेकिन "unlimitedStorage" की अनुमति का अनुरोध करके इसे बढ़ाया जा सकता है. ज़्यादा डेटा सेव करने के लिए, इसका इस्तेमाल करें.
storage.sync
अगर सिंक करने की सुविधा चालू है, तो डेटा उसी Chrome ब्राउज़र से सिंक होता है जिसमें उपयोगकर्ता ने लॉग इन किया है. बंद होने पर, यह storage.local की तरह काम करता है. जब Chrome ऑफ़लाइन होता है, तब वह डेटा को डिवाइस में सेव करता है. साथ ही, ऑनलाइन होने पर डेटा को सिंक करना फिर से शुरू करता है. कोटा की सीमा करीब 100 केबी, हर आइटम के लिए 8 केबी की है. सिंक किए गए सभी ब्राउज़र में उपयोगकर्ता की सेटिंग को सेव करने के लिए, इसका इस्तेमाल करें.
storage.session
ब्राउज़र सेशन के दौरान डेटा को मेमोरी में होल्ड करता है. डिफ़ॉल्ट रूप से, यह कॉन्टेंट स्क्रिप्ट के लिए उपलब्ध नहीं होता. हालांकि, chrome.storage.session.setAccessLevel() सेट करके, इस व्यवहार को बदला जा सकता है. कोटा की सीमा करीब 10 एमबी है. सर्विस वर्कर रन में ग्लोबल वैरिएबल को स्टोर करने के लिए, इसका इस्तेमाल करें.
storage.managed
एडमिन, मैनेज किए जा रहे एनवायरमेंट में काम करने वाले एक्सटेंशन की सेटिंग कॉन्फ़िगर करने के लिए, स्कीमा और एंटरप्राइज़ नीतियों का इस्तेमाल कर सकते हैं. इस स्टोरेज में मौजूद फ़ाइलों को सिर्फ़ पढ़ा जा सकता है.

मेनिफ़ेस्ट

Storage API का इस्तेमाल करने के लिए, एक्सटेंशन में "storage" अनुमति का एलान करें मेनिफ़ेस्ट दिखेगा. उदाहरण के लिए:

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

इस्तेमाल

यहां दिए गए सैंपल में, local, sync, और session स्टोरेज एरिया दिखाए गए हैं:

storage.local

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

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

storage.sync

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

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

storage.session

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

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

managed स्टोरेज एरिया के बारे में ज़्यादा जानने के लिए, स्टोरेज एरिया के लिए मेनिफ़ेस्ट देखें.

स्टोरेज और ट्रॉथलिंग की सीमाएं

Storage API में कुछ जोड़ने का मतलब यह नहीं है कि चीज़ों को किसी बड़े ट्रक में रखा जाए. स्टोरेज में कुछ जोड़ने का मतलब है कि आपने किसी पाइप में कुछ डाला है. हो सकता है कि पाइप में पहले से ही कोई कॉन्टेंट हो और वह भरा हुआ हो. मान लें कि स्टोरेज में जोड़ने और असल में सेव होने के बीच देरी हुई है रिकॉर्ड किया गया.

स्टोरेज एरिया की सीमाओं के बारे में जानने के लिए और तय करें कि सीमा पार होने पर क्या होता है, sync, local, और session के लिए कोटा की जानकारी देखें.

उपयोग के उदाहरण

नीचे दिए गए सेक्शन में, Storage 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 एक्सटेंशन को कभी-कभी इससे पहले कि वे अपने इवेंट हैंडलर एक्ज़ीक्यूट करें, स्टोरेज से डेटा एसिंक्रोनस रूप से लोड हो जाता है. ऐसा करने के लिए, यहां दिया गया स्निपेट, एक ऐसे सिंक न होने वाले 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);
});

एक्सटेंशन के उदाहरण

Storage API के अन्य डेमो देखने के लिए, इनमें से कोई एक उदाहरण देखें:

टाइप

AccessLevel

Chrome 102 और उसके बाद के वर्शन

स्टोरेज एरिया का ऐक्सेस लेवल.

Enum

"TRUSTED_CONTEXTS"
इससे, एक्सटेंशन से शुरू होने वाले कॉन्टेक्स्ट के बारे में पता चलता है.

&quot;TRUSTED_AND_UNTRUSTED_CONTEXTS&quot;
एक्सटेंशन के बाहर से आने वाले संदर्भ के बारे में बताता है.

StorageArea

प्रॉपर्टी

  • onChanged

    Event<functionvoidvoid>

    Chrome 73 और उसके बाद के वर्शन

    एक या उससे ज़्यादा आइटम बदलने पर ट्रिगर होता है.

    onChanged.addListener फ़ंक्शन इस तरह दिखता है:

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

    • कॉलबैक

      फ़ंक्शन

      callback पैरामीटर इस तरह दिखता है:

      (changes: object) => void

      • बदलाव

        ऑब्जेक्ट

  • मिटाएं

    अमान्य

    प्रॉमिस

    डिवाइस के स्टोरेज से सभी आइटम हटा दिए जाते हैं.

    clear फ़ंक्शन इस तरह दिखता है:

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

    • कॉलबैक

      फ़ंक्शन वैकल्पिक

      callback पैरामीटर ऐसा दिखता है:

      () => void

    • returns

      प्रॉमिस<void>

      Chrome 88 और उसके बाद के वर्शन

      प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

  • रिवॉर्ड पाएँ

    अमान्य

    प्रॉमिस

    स्टोरेज से एक या उससे ज़्यादा आइटम पाता है.

    get फ़ंक्शन इस तरह दिखता है:

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

    • बटन

      string | string[] | ऑब्जेक्ट ज़रूरी नहीं

      एक कुंजी, कुंजियों की सूची या डिफ़ॉल्ट वैल्यू बताने वाली डिक्शनरी (ऑब्जेक्ट की जानकारी देखें). खाली सूची या ऑब्जेक्ट दिखाने पर नतीजों के लिए खाली ऑब्जेक्ट दिखेगा. स्टोरेज का पूरा कॉन्टेंट पाने के लिए, null पास करें.

    • कॉलबैक

      फ़ंक्शन वैकल्पिक

      callback पैरामीटर इस तरह दिखता है:

      (items: object) => void

      • आइटम

        ऑब्जेक्ट

        ऑब्जेक्ट के साथ, की-वैल्यू मैपिंग में मौजूद आइटम.

    • returns

      Promise<object>

      Chrome 88 और उसके बाद के वर्शन

      प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.

  • getBytesInUse

    अमान्य

    वादा करना

    इससे पता चलता है कि एक या उससे ज़्यादा आइटम का इस्तेमाल करके, कितनी जगह (बाइट में) का इस्तेमाल किया जा रहा है.

    getBytesInUse फ़ंक्शन इस तरह दिखता है:

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

    • बटन

      string | स्ट्रिंग[] ज़रूरी नहीं

      किसी एक कुंजी या कुंजियों की सूची का कुल इस्तेमाल जानने के लिए. खाली सूची में 0 दिखेगा. पूरे स्टोरेज का इस्तेमाल करने के लिए, null पास करें.

    • कॉलबैक

      फ़ंक्शन वैकल्पिक

      callback पैरामीटर ऐसा दिखता है:

      (bytesInUse: number) => void

      • bytesInUse

        संख्या

        स्टोरेज में इस्तेमाल की जा रही जगह की जानकारी (बाइट में).

    • returns

      प्रॉमिस<number>

      Chrome 88 और उसके बाद के वर्शन

      प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.

  • getKeys

    अमान्य

    प्रॉमिस Chrome 130 और इसके बाद के वर्शन

    स्टोरेज से सभी कुंजियां पाता है.

    getKeys फ़ंक्शन इस तरह दिखता है:

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

    • कॉलबैक

      फ़ंक्शन वैकल्पिक

      callback पैरामीटर ऐसा दिखता है:

      (keys: string[]) => void

      • बटन

        string[]

        स्टोरेज से पढ़ी गई कुंजियों की कलेक्शन.

    • returns

      प्रॉमिस<string[]>

      प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.

  • कॉन्टेंट हटाना

    अमान्य

    प्रॉमिस

    स्टोरेज से एक या उससे ज़्यादा आइटम हटाता है.

    remove फ़ंक्शन इस तरह दिखता है:

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

    • बटन

      string | string[]

      हटाए जाने वाले आइटम के लिए कोई एक कुंजी या कुंजियों की सूची.

    • कॉलबैक

      फ़ंक्शन वैकल्पिक

      callback पैरामीटर ऐसा दिखता है:

      () => void

    • returns

      प्रॉमिस<void>

      Chrome 88 और उसके बाद के वर्शन

      प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.

  • सेट करो

    अमान्य

    प्रॉमिस

    कई आइटम सेट करता है.

    set फ़ंक्शन इस तरह दिखता है:

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

    • आइटम

      ऑब्जेक्ट

      एक ऐसा ऑब्जेक्ट जो स्टोरेज को अपडेट करने के लिए, हर कुंजी/वैल्यू पेयर को देता है. स्टोरेज में मौजूद किसी भी अन्य कुंजी/वैल्यू पेयर पर कोई असर नहीं पड़ेगा.

      संख्या जैसी प्राइमटिव वैल्यू, उम्मीद के मुताबिक सीरियलाइज़ हो जाएंगी. आम तौर पर, typeof "object", और "function" वाली वैल्यू, {} के तौर पर सीरियलाइज़ होंगी. हालांकि, Array (जैसा कि उम्मीद है वैसा ही सीरियलाइज़ होता है), Date, और Regex (उनके String रेप्रज़ेंटेशन का इस्तेमाल करके सीरियलाइज़ होता है) को छोड़कर.

    • कॉलबैक

      फ़ंक्शन वैकल्पिक

      callback पैरामीटर ऐसा दिखता है:

      () => void

    • returns

      प्रॉमिस<void>

      Chrome 88 और उसके बाद के वर्शन

      प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.

  • setAccessLevel

    अमान्य

    Promise Chrome 102 और उसके बाद के वर्शन के लिए

    स्टोरेज एरिया के लिए, ऐक्सेस का लेवल सेट करता है. डिफ़ॉल्ट रूप से, सिर्फ़ भरोसेमंद कॉन्टेक्स्ट इस्तेमाल किए जाएंगे.

    setAccessLevel फ़ंक्शन इस तरह दिखता है:

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

    • accessOptions

      ऑब्जेक्ट

      • accessLevel

        स्टोरेज एरिया का ऐक्सेस लेवल.

    • कॉलबैक

      फ़ंक्शन वैकल्पिक

      callback पैरामीटर ऐसा दिखता है:

      () => void

    • returns

      Promise<void>

      प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.

StorageChange

प्रॉपर्टी

  • newValue

    कोई भी ज़रूरी नहीं है

    अगर कोई नई वैल्यू मौजूद है, तो आइटम की नई वैल्यू.

  • oldValue

    कोई भी ज़रूरी नहीं है

    अगर आइटम की कोई पुरानी वैल्यू थी, तो वह वैल्यू.

प्रॉपर्टी

local

local स्टोरेज एरिया में मौजूद आइटम, हर मशीन के लिए स्थानीय होते हैं.

टाइप

StorageArea & object

प्रॉपर्टी

  • QUOTA_BYTES

    10485760

    लोकल स्टोरेज में ज़्यादा से ज़्यादा कितना डेटा (बाइट में) सेव किया जा सकता है. इसे हर वैल्यू और हर बटन की लंबाई के JSON स्ट्रिंगफ़िकेशन से मेज़र किया जाता है. अगर एक्सटेंशन के पास unlimitedStorage की अनुमति है, तो इस वैल्यू को अनदेखा कर दिया जाएगा. जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समय runtime.lastError सेट करते हैं या एसिंक/अवेट का इस्तेमाल करने पर अस्वीकार किया गया प्रॉमिस सेट करते हैं.

managed

managed स्टोरेज एरिया में मौजूद आइटम, डोमेन एडमिन की कॉन्फ़िगर की गई एंटरप्राइज़ नीति के हिसाब से सेट होते हैं. ये आइटम, एक्सटेंशन के लिए रीड-ओनली होते हैं. इस नेमस्पेस में बदलाव करने की कोशिश करने पर गड़बड़ी का मैसेज मिलता है. नीति को कॉन्फ़िगर करने के बारे में जानने के लिए, स्टोरेज एरिया के लिए मेनिफ़ेस्ट देखें.

टाइप

session

Chrome 102 और उसके बाद के वर्शन MV3 और उसके बाद के वर्शन

session स्टोरेज एरिया में मौजूद आइटम, मेमोरी में सेव किए जाते हैं और डिस्क में सेव नहीं किए जाते.

टाइप

StorageArea और ऑब्जेक्ट

प्रॉपर्टी

  • QUOTA_BYTES

    10485760

    हर वैल्यू और कुंजी के डाइनैमिक तरीके से असाइन किए गए मेमोरी के इस्तेमाल का अनुमान लगाकर, मेमोरी में सेव की जा सकने वाली ज़्यादा से ज़्यादा संख्या (बाइट में) को. जिन अपडेट की वजह से यह सीमा पार हो जाएगी वे तुरंत फ़ेल हो जाएंगे. साथ ही, कॉलबैक का इस्तेमाल करने पर या किसी प्रॉमिस को अस्वीकार किए जाने पर, runtime.lastError सेट हो जाएगा.

sync

sync स्टोरेज एरिया में मौजूद आइटम, 'Chrome सिंक' का इस्तेमाल करके सिंक किए जाते हैं.

टाइप

StorageArea और ऑब्जेक्ट

प्रॉपर्टी

  • MAX_ITEMS

    512

    सिंक स्टोरेज में सेव किए जा सकने वाले आइटम की ज़्यादा से ज़्यादा संख्या. जिन अपडेट की वजह से यह सीमा पार हो जाएगी वे तुरंत फ़ेल हो जाएंगे. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस को अस्वीकार किए जाने पर, runtime.lastError सेट कर दिया जाएगा.

  • MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

    1000000

    अब काम नहीं करता

    Storage.sync API में अब लंबे समय तक लिखने के लिए कार्रवाई करने का कोटा नहीं है.

  • MAX_WRITE_OPERATIONS_PER_HOUR

    1800

    हर घंटे ज़्यादा से ज़्यादा set, remove या clear कार्रवाइयां की जा सकती हैं. यह हर दो सेकंड में एक बार होता है. यह शॉर्ट टर्म के लिए हर मिनट लिखने की ज़्यादा सीमा से कम होता है.

    जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर, runtime.lastError सेट करते हैं.

  • MAX_WRITE_OPERATIONS_PER_MINUTE

    120

    हर मिनट ज़्यादा से ज़्यादा set, remove या clear कार्रवाइयां की जा सकती हैं. यह दर हर सेकंड में दो है. इससे कम समय में, हर घंटे में किए जाने वाले लिखे गए रिकॉर्ड की तुलना में ज़्यादा थ्रूपुट मिलता है.

    जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर, 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

    • बदलाव

      ऑब्जेक्ट

    • areaName

      स्ट्रिंग