chrome.storage

คำอธิบาย

ใช้ chrome.storage API เพื่อจัดเก็บ เรียกข้อมูล และติดตามการเปลี่ยนแปลงในข้อมูลผู้ใช้

สิทธิ์

storage

หากต้องการใช้ Storage API ให้ประกาศสิทธิ์ "storage" ในส่วนขยาย ประจักษ์แจ้ง เช่น

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

แนวคิดและการใช้งาน

Storage API มอบวิธีที่เจาะจงของส่วนขยายในการคงข้อมูลผู้ใช้และสถานะ ซึ่งคล้ายกับ API พื้นที่เก็บข้อมูลของแพลตฟอร์มเว็บ (IndexedDB และพื้นที่เก็บข้อมูล) แต่ออกแบบมาเพื่อตอบสนองความต้องการด้านพื้นที่เก็บข้อมูลของส่วนขยาย ฟีเจอร์หลักมีดังนี้

  • บริบทส่วนขยายทั้งหมด รวมถึง Service Worker สำหรับส่วนขยายและสคริปต์เนื้อหาจะมีสิทธิ์เข้าถึง Storage API
  • ค่าที่ทำให้อนุกรมของ JSON ได้จะจัดเก็บเป็นคุณสมบัติของออบเจ็กต์
  • Storage API ทำงานไม่พร้อมกันกับการดำเนินการอ่านและเขียนจำนวนมาก
  • แม้ว่าผู้ใช้จะล้างแคชและประวัติการท่องเว็บแล้ว แต่ข้อมูลจะยังคงอยู่
  • การตั้งค่าที่บันทึกไว้จะยังคงอยู่แม้จะใช้แยกโหมดไม่ระบุตัวตนก็ตาม
  • รวมพื้นที่เก็บข้อมูลที่มีการจัดการแบบอ่านอย่างเดียวสำหรับนโยบายองค์กร

ส่วนขยายสามารถใช้ API พื้นที่เก็บข้อมูลเว็บได้หรือไม่

แม้ว่าส่วนขยายจะใช้อินเทอร์เฟซ Storage (เข้าถึงได้จาก window.localStorage) ในบางบริบท (ป๊อปอัปและหน้า HTML อื่นๆ) แต่เราไม่แนะนำวิธีนี้ด้วยเหตุผลต่อไปนี้

  • โปรแกรมทำงานของบริการส่วนขยายใช้ Web Storage API ไม่ได้
  • สคริปต์เนื้อหาจะใช้พื้นที่เก็บข้อมูลร่วมกับหน้าโฮสต์
  • ข้อมูลที่บันทึกไว้โดยใช้ Web Storage API จะสูญหายเมื่อผู้ใช้ล้างประวัติการท่องเว็บ

หากต้องการย้ายข้อมูลจาก Web Storage API ไปยัง API พื้นที่เก็บข้อมูลของส่วนขยายจาก Service Worker ให้ทำดังนี้

  1. เตรียมหน้า HTML ของเอกสารและไฟล์สคริปต์นอกหน้าจอ ไฟล์สคริปต์ควรมีกิจวัตร Conversion และเครื่องจัดการ onMessage
  2. ใน Service Worker ของส่วนขยาย ให้ตรวจหาข้อมูลของคุณใน chrome.storage
  3. หากไม่พบข้อมูล ให้โทรหา createDocument()
  4. หลังจาก "คำสัญญา" ที่แสดงผลสำเร็จ ให้เรียกใช้ sendMessage() เพื่อเริ่มกิจวัตร Conversion
  5. เรียกใช้กิจวัตร Conversion ภายในเครื่องจัดการ onMessage ของเอกสารนอกหน้าจอ

นอกจากนี้ยังมีความแตกต่างเล็กๆ น้อยๆ เกี่ยวกับวิธีการทำงานของ API พื้นที่เก็บข้อมูลเว็บในส่วนขยาย ดูข้อมูลเพิ่มเติมใน บทความพื้นที่เก็บข้อมูลและคุกกี้

พื้นที่เก็บข้อมูล

Storage API แบ่งออกเป็นพื้นที่เก็บข้อมูลดังต่อไปนี้

storage.local
ข้อมูลจะจัดเก็บอยู่ในเครื่องและล้างออกเมื่อนำส่วนขยายออก ขีดจำกัดของพื้นที่เก็บข้อมูลคือ 10 MB (5 MB ใน Chrome 113 และเวอร์ชันก่อนหน้า) แต่จะเพิ่มได้ด้วยการขอสิทธิ์ "unlimitedStorage" เราขอแนะนำให้ใช้ storage.local เพื่อเก็บข้อมูลจำนวนมาก
storage.managed
พื้นที่เก็บข้อมูลที่มีการจัดการคือพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวสำหรับส่วนขยายที่ติดตั้งนโยบาย และจัดการโดยผู้ดูแลระบบโดยใช้สคีมาที่นักพัฒนาซอฟต์แวร์และนโยบายองค์กร นโยบายคล้ายกับตัวเลือก แต่จะกำหนดค่าโดยผู้ดูแลระบบแทนผู้ใช้ ทำให้สามารถกำหนดค่าส่วนขยายไว้ล่วงหน้าสำหรับผู้ใช้ทั้งหมดขององค์กร โปรดดูข้อมูลเกี่ยวกับนโยบายในเอกสารสำหรับผู้ดูแลระบบ ดูข้อมูลเพิ่มเติมเกี่ยวกับพื้นที่เก็บข้อมูลของ managed ได้ที่ไฟล์ Manifest สำหรับพื้นที่เก็บข้อมูล
storage.session
เก็บข้อมูลในหน่วยความจำตลอดระยะเวลาของเซสชันเบราว์เซอร์ ระบบไม่แสดงสคริปต์เนื้อหาโดยค่าเริ่มต้น แต่คุณเปลี่ยนลักษณะการทำงานนี้ได้ในการตั้งค่า chrome.storage.session.setAccessLevel() พื้นที่เก็บข้อมูลต้องมีขนาดไม่เกิน 10 MB (1 MB ใน Chrome 111 และเวอร์ชันก่อนหน้า) อินเทอร์เฟซ storage.session เป็นหนึ่งในหลายๆ ที่ที่เราแนะนำสำหรับ Service Worker
storage.sync
หากเปิดการซิงค์ไว้ ข้อมูลจะซิงค์กับเบราว์เซอร์ Chrome ใดก็ตามที่ผู้ใช้ลงชื่อเข้าใช้อยู่ หากปิดใช้ จะมีลักษณะการทำงานเหมือน storage.local Chrome จะเก็บข้อมูลไว้ในเครื่องเมื่อเบราว์เซอร์ออฟไลน์ และซิงค์ต่อเมื่อกลับมาออนไลน์อีกครั้ง โดยขีดจำกัดโควต้าจะอยู่ที่ประมาณ 100 KB หรือ 8 KB ต่อรายการ เราขอแนะนำให้ใช้ storage.sync เพื่อรักษาการตั้งค่าผู้ใช้ในเบราว์เซอร์ที่ซิงค์ไว้ หากกำลังใช้ข้อมูลที่ละเอียดอ่อนของผู้ใช้ ให้ใช้ storage.session แทน

ขีดจำกัดพื้นที่เก็บข้อมูลและการควบคุม

Storage API มีข้อจํากัดการใช้งานดังต่อไปนี้

  • การจัดเก็บข้อมูลมักมาพร้อมกับค่าใช้จ่ายด้านประสิทธิภาพ และ API ยังรวมโควต้าพื้นที่เก็บข้อมูลด้วย เราขอแนะนำให้ระมัดระวังเกี่ยวกับข้อมูลที่คุณจัดเก็บเพื่อไม่ให้สูญเสียความสามารถในการจัดเก็บข้อมูล
  • พื้นที่เก็บข้อมูลอาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าได้จัดโครงสร้างโค้ดของคุณให้ครอบคลุมเวลานั้นๆ

โปรดดูรายละเอียดเกี่ยวกับขีดจำกัดของพื้นที่เก็บข้อมูลและสิ่งที่จะเกิดขึ้นเมื่อใช้พื้นที่เก็บข้อมูลเกินขีดจำกัด โปรดดูข้อมูลโควต้าของ sync, local และ session

กรณีการใช้งาน

ส่วนต่อไปนี้จะแสดงกรณีการใช้งานทั่วไปสำหรับ Storage API

การตอบสนองต่อการอัปเดตพื้นที่เก็บข้อมูลแบบซิงโครนัส

หากต้องการติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับพื้นที่เก็บข้อมูล ให้เพิ่ม Listener ลงในเหตุการณ์ 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 ทันที และ Service Worker จะใช้ 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);
  }
});

การโหลดล่วงหน้าแบบไม่พร้อมกันจากพื้นที่เก็บข้อมูล

เนื่องจากโปรแกรมทำงานของบริการไม่ได้ทำงานตลอดเวลา ส่วนขยาย Manifest 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 ขึ้นไป

ระดับการเข้าถึงของพื้นที่เก็บข้อมูล

ค่าแจกแจง

"TRUSTED_CONTEXTS"
ระบุบริบทที่มาจากส่วนขยาย

&quot;TRUSTED_AND_UNTRUSTED_CONTEXTS&quot;
ระบุบริบทที่มาจากภายนอกส่วนขยาย

StorageArea

พร็อพเพอร์ตี้

  • onChanged

    เหตุการณ์<functionvoid>

    Chrome 73 ขึ้นไป

    เริ่มทำงานเมื่อมีการเปลี่ยนแปลงอย่างน้อย 1 รายการ

    ฟังก์ชัน onChanged.addListener มีลักษณะดังนี้

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

    • Callback

      ฟังก์ชัน

      พารามิเตอร์ callback มีลักษณะดังนี้

      (changes: object) => void

      • การเปลี่ยนแปลง

        ออบเจ็กต์

  • ล้าง

    เป็นโมฆะ

    สัญญา

    นำรายการทั้งหมดออกจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน clear มีลักษณะดังนี้

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

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      Chrome เวอร์ชัน 88 ขึ้นไป

      รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

  • รับ

    เป็นโมฆะ

    สัญญา

    รับอย่างน้อย 1 รายการจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน get มีลักษณะดังนี้

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

    • กุญแจ

      string | string[] | ออบเจ็กต์ไม่บังคับ

      คีย์เดียวสำหรับรับ รายการคีย์ที่จะรับ หรือพจนานุกรมที่ระบุค่าเริ่มต้น (ดูคำอธิบายออบเจ็กต์) รายการหรือออบเจ็กต์ที่ว่างเปล่าจะแสดงออบเจ็กต์ผลลัพธ์ที่ว่างเปล่า ส่งใน null เพื่อรับเนื้อหาทั้งหมดของพื้นที่เก็บข้อมูล

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      (items: object) => void

      • รายการ

        ออบเจ็กต์

        ออบเจ็กต์ที่มีรายการในการแมปคีย์-ค่า

    • returns

      Promise&lt;object&gt;

      Chrome เวอร์ชัน 88 ขึ้นไป

      รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

  • getBytesInUse

    เป็นโมฆะ

    สัญญา

    รับข้อมูลพื้นที่ (ในหน่วยไบต์) ที่มีรายการอย่างน้อย 1 รายการใช้อยู่

    ฟังก์ชัน getBytesInUse มีลักษณะดังนี้

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

    • กุญแจ

      string | string[] ไม่บังคับ

      คีย์เดียวหรือลิสต์คีย์เพื่อดูการใช้งานทั้งหมด รายการที่ว่างเปล่าจะแสดงค่าเป็น 0 ส่งใน null เพื่อรับปริมาณการใช้พื้นที่เก็บข้อมูลทั้งหมด

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      (bytesInUse: number) => void

      • bytesInUse

        ตัวเลข

        ปริมาณพื้นที่ที่ใช้ในพื้นที่เก็บข้อมูลในหน่วยไบต์

    • returns

      Promise&lt;number&gt;

      Chrome เวอร์ชัน 88 ขึ้นไป

      รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

  • getKeys

    เป็นโมฆะ

    สัญญา รอดำเนินการ

    ดึงคีย์ทั้งหมดจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน getKeys มีลักษณะดังนี้

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

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      (keys: string[]) => void

      • กุญแจ

        สตริง[]

        อาร์เรย์ด้วยคีย์ที่อ่านจากพื้นที่เก็บข้อมูล

    • returns

      Promise&lt;string[]&gt;

      รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

  • นำข้อมูลออก

    เป็นโมฆะ

    สัญญา

    นำรายการออกจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน remove มีลักษณะดังนี้

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

    • กุญแจ

      string | สตริง[]

      คีย์เดียวหรือชุดคีย์สำหรับรายการต่างๆ ที่จะนำออก

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      Chrome เวอร์ชัน 88 ขึ้นไป

      รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

  • ตั้งค่า

    เป็นโมฆะ

    สัญญา

    ตั้งค่าหลายรายการ

    ฟังก์ชัน set มีลักษณะดังนี้

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

    • รายการ

      ออบเจ็กต์

      ออบเจ็กต์ที่ให้คู่คีย์/ค่าแต่ละคู่สำหรับอัปเดตพื้นที่เก็บข้อมูล คู่คีย์/ค่าอื่นๆ ในพื้นที่เก็บข้อมูลจะไม่ได้รับผลกระทบ

      ค่าพื้นฐาน เช่น ตัวเลข จะเรียงลำดับตามที่คาดไว้ โดยทั่วไปแล้วค่าที่มี typeof "object" และ "function" จะเป็นแบบอนุกรมเป็น {} ยกเว้น Array (ทำให้เป็นอนุกรมตามที่คาดไว้), Date และ Regex (ทำให้เป็นอนุกรมโดยใช้การแทน String)

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      Chrome เวอร์ชัน 88 ขึ้นไป

      รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

  • setAccessLevel

    เป็นโมฆะ

    สัญญา Chrome 102 ขึ้นไป

    ตั้งค่าระดับการเข้าถึงที่ต้องการสำหรับพื้นที่เก็บข้อมูล ค่าเริ่มต้นจะเป็นบริบทที่เชื่อถือได้เท่านั้น

    ฟังก์ชัน setAccessLevel มีลักษณะดังนี้

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

    • accessOptions

      ออบเจ็กต์

      • accessLevel

        ระดับการเข้าถึงของพื้นที่เก็บข้อมูล

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

StorageChange

พร็อพเพอร์ตี้

  • newValue

    ใดก็ได้ไม่บังคับ

    ค่าใหม่ของสินค้า หากมีค่าใหม่

  • oldValue

    ใดก็ได้ไม่บังคับ

    ค่าเดิมของรายการ หากมีค่าเก่า

พร็อพเพอร์ตี้

local

รายการในพื้นที่เก็บข้อมูลของ local จะเป็นข้อมูลในเครื่องของแต่ละเครื่อง

ประเภท

StorageArea และ ออบเจ็กต์

พร็อพเพอร์ตี้

  • QUOTA_BYTES

    10485760

    จำนวนข้อมูลสูงสุด (เป็นไบต์) ที่สามารถจัดเก็บไว้ในพื้นที่เก็บข้อมูลในเครื่อง ซึ่งวัดโดยการกำหนดสตริง JSON ของทุกค่าบวกความยาวของคีย์ทุกคีย์ ระบบจะไม่สนใจค่านี้หากส่วนขยายมีสิทธิ์ unlimitedStorage การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือ Promise ที่ถูกปฏิเสธหากใช้ async/await

managed

รายการในพื้นที่เก็บข้อมูลของ managed จะได้รับการตั้งค่าโดยนโยบายองค์กรที่กำหนดโดยผู้ดูแลระบบโดเมน และเป็นแบบอ่านอย่างเดียวสำหรับส่วนขยาย การพยายามแก้ไขเนมสเปซนี้ทำให้เกิดข้อผิดพลาด โปรดดูข้อมูลเกี่ยวกับการกำหนดค่านโยบายที่หัวข้อไฟล์ Manifest สำหรับพื้นที่เก็บข้อมูล

ประเภท

session

Chrome 102 ขึ้นไป MV3 ขึ้นไป

รายการในพื้นที่เก็บข้อมูลของ session จะเก็บไว้ในหน่วยความจำและจะไม่คงอยู่ในดิสก์

ประเภท

StorageArea และ ออบเจ็กต์

พร็อพเพอร์ตี้

  • QUOTA_BYTES

    10485760

    จำนวนข้อมูลสูงสุด (เป็นไบต์) ที่สามารถจัดเก็บไว้ในหน่วยความจำ ซึ่งวัดโดยการประมาณการใช้งานหน่วยความจำที่จัดสรรแบบไดนามิกของทุกค่าและคีย์ การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

sync

รายการในพื้นที่เก็บข้อมูลของ sync จะซิงค์โดยใช้การซิงค์ของ Chrome

ประเภท

StorageArea และ ออบเจ็กต์

พร็อพเพอร์ตี้

  • MAX_ITEMS

    512

    จำนวนรายการสูงสุดที่สามารถจัดเก็บไว้ในพื้นที่เก็บข้อมูลที่ซิงค์ได้ การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

    1000000

    เลิกใช้งานแล้ว

    Storage.sync API ไม่มีโควต้าการดำเนินการเขียนที่ยั่งยืนอีกต่อไป

  • MAX_WRITE_OPERATIONS_PER_HOUR

    1800

    จำนวนการดำเนินการ set, remove หรือ clear สูงสุดที่ดำเนินการได้ในแต่ละชั่วโมง ซึ่งเท่ากับ 1 ทุก 2 วินาที ซึ่งเป็นค่าเพดานที่ต่ำกว่าขีดจำกัดการเขียนต่อนาทีที่สูงขึ้นในระยะสั้น

    การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • MAX_WRITE_OPERATIONS_PER_MINUTE

    120

    จำนวนการดำเนินการ set, remove หรือ clear สูงสุดที่ดำเนินการได้ในแต่ละนาที ซึ่งเท่ากับ 2 ต่อวินาที ซึ่งให้อัตราการส่งข้อมูลที่สูงกว่าการเขียนต่อชั่วโมงในระยะเวลาที่สั้น

    การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • QUOTA_BYTES

    102400

    จำนวนข้อมูลทั้งหมด (หน่วยเป็นไบต์) ที่สามารถจัดเก็บไว้ในพื้นที่เก็บข้อมูลที่ซิงค์ได้ ซึ่งวัดโดยสตริง JSON ของทุกค่าและความยาวของคีย์ทุกคีย์ การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • QUOTA_BYTES_PER_ITEM

    8192

    ขนาดสูงสุด (เป็นไบต์) ของแต่ละรายการในพื้นที่เก็บข้อมูลที่ซิงค์ ซึ่งวัดโดยการจัดเรียงสตริง JSON ของค่าและความยาวของคีย์ การอัปเดตที่มีรายการที่มีขนาดใหญ่กว่าขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันทีและจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อ Promise ถูกปฏิเสธ

กิจกรรม

onChanged

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

เริ่มทำงานเมื่อมีการเปลี่ยนแปลงอย่างน้อย 1 รายการ

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

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

    • การเปลี่ยนแปลง

      ออบเจ็กต์

    • areaName

      สตริง