chrome.storage

ब्यौरा

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

अनुमतियां

storage

स्टोरेज एपीआई का इस्तेमाल करने के लिए, एक्सटेंशन मेनिफ़ेस्ट में "storage" अनुमति का एलान करें. उदाहरण के लिए:

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

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

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

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

क्या एक्सटेंशन, वेब स्टोरेज एपीआई का इस्तेमाल कर सकते हैं?

एक्सटेंशन, कुछ कॉन्टेक्स्ट (पॉप-अप और अन्य एचटीएमएल पेज) में 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"
एक्सटेंशन से मिलने वाले कॉन्टेक्स्ट के बारे में बताता है.

"TRUSTED_AND_UNTRUSTED_CONTEXTS"
एक्सटेंशन के बाहर से आने वाले कॉन्टेक्स्ट के बारे में बताता है.

StorageArea

प्रॉपर्टी

  • onChanged

    इवेंट<Functionvoidvoid>

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

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

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

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

    • कॉलबैक

      फ़ंक्शन

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

      (changes: object)=>void

      • बदलाव

        ऑब्जेक्ट

  • मिटाएं

    void

    वादा

    स्टोरेज से सभी आइटम हटा देता है.

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

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

    • कॉलबैक

      फ़ंक्शन ज़रूरी नहीं

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

      ()=>void

    • returns

      Promise<void>

      Chrome 88+

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

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

    void

    वादा

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

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

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

    • बटन

      string|string[]|object optional

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

    • कॉलबैक

      फ़ंक्शन ज़रूरी नहीं

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

      (items: object)=>void

      • items

        ऑब्जेक्ट

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

    • returns

      Promise<object>

      Chrome 88+

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

  • getBytesInUse

    void

    वादा

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

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

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

    • बटन

      string|string[] optional

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

    • कॉलबैक

      फ़ंक्शन ज़रूरी नहीं

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

      (bytesInUse: number)=>void

      • bytesInUse

        नंबर

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

    • returns

      वादा<number>

      Chrome 88+

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

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

    void

    वादा

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

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

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

    • बटन

      स्ट्रिंग|स्ट्रिंग[]

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

    • कॉलबैक

      फ़ंक्शन ज़रूरी नहीं

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

      ()=>void

    • returns

      Promise<void>

      Chrome 88+

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

  • सेट करो

    void

    वादा

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

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

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

    • items

      ऑब्जेक्ट

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

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

    • कॉलबैक

      फ़ंक्शन ज़रूरी नहीं

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

      ()=>void

    • returns

      Promise<void>

      Chrome 88+

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

  • setAccessLevel

    void

    Promise Chrome 102+

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

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

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

    • accessOptions

      ऑब्जेक्ट

      • accessLevel

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

    • कॉलबैक

      फ़ंक्शन ज़रूरी नहीं

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

      ()=>void

    • returns

      Promise<void>

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

StorageChange

प्रॉपर्टी

  • newValue

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

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

  • oldValue

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

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

प्रॉपर्टी

local

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

टाइप

प्रॉपर्टी

  • QUOTA_BYTES

    10485760

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

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

    अब सेवा में नहीं है

    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

    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

      स्ट्रिंग