chrome.storage

ब्यौरा

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

अनुमतियां

storage

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

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

सिद्धांत और उनका इस्तेमाल

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

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

क्या एक्सटेंशन, Web Storage API का इस्तेमाल कर सकते हैं?

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

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

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

  1. एक ऑफ़स्क्रीन दस्तावेज़ एचटीएमएल पेज और स्क्रिप्ट फ़ाइल तैयार करें. स्क्रिप्ट फ़ाइल में एक कन्वर्ज़न रूटीन और एक onMessage हैंडलर होना चाहिए.
  2. एक्सटेंशन सर्विस वर्कर में, अपने डेटा के लिए chrome.storage की जांच करें.
  3. अगर आपका डेटा नहीं मिलता है, तो createDocument() पर कॉल करें.
  4. लौटाए गए प्रॉमिस का समाधान हो जाने के बाद, कन्वर्ज़न रूटीन शुरू करने के लिए sendMessage() पर कॉल करें.
  5. ऑफ़स्क्रीन दस्तावेज़ के onMessage हैंडलर के अंदर, कन्वर्ज़न रूटीन को कॉल करें.

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

स्टोरेज की जगहें

Storage API को नीचे दिए गए स्टोरेज एरिया में बांटा गया है:

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

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

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);
});

उदाहरण

ये सैंपल 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);
});

Storage API के अन्य डेमो देखने के लिए, इनमें से कोई भी सैंपल देखें:

टाइप

AccessLevel

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

स्टोरेज की जगह का ऐक्सेस लेवल.

Enum

"TRUSTED_contextS"
एक्सटेंशन से शुरू होने वाले संदर्भों के बारे में भी बताता है.

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

StorageArea

प्रॉपर्टी

  • onChanged

    इवेंट<Functionvoid>

    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&lt;object&gt;

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

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

  • getBytesInUse

    अमान्य

    प्रॉमिस

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

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

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

    • बटन

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

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

    • कॉलबैक

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

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

      (bytesInUse: number) => void

      • bytesInUse

        संख्या

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

    • returns

      Promise&lt;number&gt;

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

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

  • 'GetKeys'

    अमान्य

    प्रॉमिस मंज़ूरी बाकी है

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

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

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

    • कॉलबैक

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

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

      (keys: string[]) => void

      • बटन

        स्ट्रिंग[]

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

    • returns

      Promise&lt;string[]&gt;

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

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

    अमान्य

    प्रॉमिस

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

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

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

    • बटन

      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

    अमान्य

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

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

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

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

    • accessOptions

      ऑब्जेक्ट

      • accessLevel

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

    • कॉलबैक

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

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

      () => void

    • returns

      प्रॉमिस<void>

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

StorageChange

प्रॉपर्टी

  • newValue

    कोई भी वैकल्पिक

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

  • oldValue

    कोई भी वैकल्पिक

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

प्रॉपर्टी

local

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

टाइप

StorageArea और ऑब्जेक्ट

प्रॉपर्टी

  • QUOTA_BYTES

    10485760

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

managed

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

टाइप

session

Chrome 102 और उसके बाद वाले वर्शन संगीत वीडियो 3+

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

टाइप

StorageArea और ऑब्जेक्ट

प्रॉपर्टी

  • QUOTA_BYTES

    10485760

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

sync

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

टाइप

StorageArea और ऑब्जेक्ट

प्रॉपर्टी

  • MAX_ITEMS

    512

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

  • MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

    10,00,000

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

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

  • MAX_WRITE_OPERATIONS_PER_HOUR

    1800

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

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

  • MAX_WRITE_OPERATIONS_PER_MINUTE

    120

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

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

  • QUOTA_BYTES

    102,400

    डेटा की ज़्यादा से ज़्यादा कुल मात्रा (बाइट में) जिसे सिंक स्टोरेज में सेव किया जा सकता है. इसे हर वैल्यू और हर कुंजी की लंबाई के 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

      स्ट्रिंग