Rumah >hujung hadapan web >tutorial js >Cara menyimpan data tanpa had* dalam penyemak imbas dengan indexeddb

Cara menyimpan data tanpa had* dalam penyemak imbas dengan indexeddb

Lisa Kudrow
Lisa Kudrowasal
2025-02-09 10:02:09286semak imbas

How to Store Unlimited* Data in the Browser with IndexedDB

Artikel ini meneroka IndexedDB, API pelayar yang mantap untuk penyimpanan data sisi klien melebihi kapasiti kaedah alternatif. Pilihan penyimpanan data pelanggan telah berkembang dengan ketara, menawarkan alternatif kepada kemas kini pangkalan data berasaskan pelayan.

Kelebihan Utama IndexedDB:

  • Kapasiti Penyimpanan Tinggi: IndexEdDB menyediakan lebih banyak penyimpanan daripada pilihan sisi klien yang lain, yang berpotensi menawarkan sekurang-kurangnya 1GB dan sehingga 60% ruang cakera yang tersedia bagi setiap domain.
  • Operasi Asynchronous: sifat asynchronousnya membolehkan pemprosesan latar belakang tanpa menyekat skrip lain, sesuai untuk dataset besar.
  • Operasi CRUD Komprehensif: menyokong mencipta, membaca, mengemas kini, dan memadam rekod (CRUD), bersama dengan versi pangkalan data dan pengurusan skema.
  • Integriti data:
  • mengekalkan integriti data melalui urus niaga yang memastikan semua operasi berjaya atau gagal bersama -sama.
  • Akses data berasaskan utama:
  • data berada di kedai objek, dengan rekod yang dikenal pasti oleh kekunci.
  • Penyebaran penyemak imbas:
  • Debugging dan pengurusan difasilitasi melalui penyemak imbas devtools, membolehkan pemeriksaan data, pengubahsuaian, dan penjelasan. Sokongan Perpustakaan:
  • Walaupun tidak menyokong ciri -ciri JavaScript moden seperti janji dan async/menunggu, perpustakaan seperti
  • menjembatani jurang ini. idb
  • mengapa memilih penyimpanan sisi klien?

Walaupun penyimpanan sisi pelayan sesuai untuk kebanyakan data pengguna, penyimpanan sisi klien adalah berfaedah untuk:

Tetapan khusus peranti:
    Keutamaan UI, mod cahaya/gelap, dan lain-lain
  • data ephemeral: data sementara seperti foto sebelum dimuat naik.
  • Penyegerakan data luar talian: data untuk penyegerakan kemudian di kawasan hubungan rendah.
  • Aplikasi Web Progresif (PWAS): fungsi luar talian untuk kebolehgunaan atau sebab privasi.
  • aset caching: prestasi yang lebih baik melalui caching.
  • Perbandingan API Penyimpanan Penyemak imbas:

Penyimpanan Web:

Penyimpanan pasangan nilai yang mudah dan segerak. Sesuai untuk data kecil dan tidak kritikal (5MB setiap domain).
  1. Cache API: menyimpan permintaan/pasangan respon HTTP, terutamanya yang digunakan oleh pekerja perkhidmatan untuk caching PWA (penyimpanan berbeza oleh penyemak imbas).
  2. IndexedDB: Pangkalan data NoSQL sisi klien untuk data, fail, dan gumpalan (sekurang-kurangnya 1GB setiap domain, berpotensi sehingga 60% ruang cakera yang tersedia).
  3. Fundamental IndexedDB:

IndexedDB, diseragamkan pada tahun 2015 (API 2.0 pada 2018, API 3.0 dalam pembangunan), menikmati sokongan penyemak imbas yang luas. Artikel ini memberi tumpuan kepada konsep teras:

How to Store Unlimited* Data in the Browser with IndexedDB

  • Pangkalan data: bekas peringkat atas. Akses terhad kepada domain yang sama.
  • kedai objek: nama/nilai kedai untuk data yang berkaitan (seperti koleksi dalam mongoDB atau jadual dalam SQL).
  • kekunci: Pengenal pasti unik untuk setiap rekod di kedai objek (boleh dijana secara automatik atau adat).
  • autoincrement: secara automatik meningkatkan nilai kunci apabila penambahan rekod.
  • indeks: menganjurkan data dalam kedai objek untuk mencari yang cekap.
  • skema: mentakrifkan kedai objek, kunci, dan indeks.
  • versi: integer untuk kemas kini skema.
  • Operasi: Tindakan pangkalan data (CRUD).
  • Transaksi:
  • membungkus operasi untuk memastikan integriti data (semua atau tidak).
  • kursor:
  • Melangkah melalui rekod dengan cekap, mengelakkan memuatkan segala -galanya ke dalam ingatan.
  • Pelaksanaan Asynchronous:
  • Operasi dijalankan secara asynchronously, membolehkan kod lain untuk meneruskan pelaksanaan.
Struktur Data Contoh (Nota Rekod):

IndexedDB menggunakan acara dan panggilan balik, kekurangan janji asli dan sokongan async/menunggu (walaupun perpustakaan seperti
<code class="language-javascript">{
  id: 1,
  title: "My first note",
  body: "A note about something",
  date: <date object>,
  tags: ["#first", "#note"]
}</date></code>
menyediakan ini).

idb

Debugging dengan DevTools:

penyemak imbas devTools (tab aplikasi dalam pelayar berasaskan krom, penyimpanan di Firefox) tidak ternilai untuk memeriksa, mengubahsuai, dan membersihkan data indexeddb.

How to Store Unlimited* Data in the Browser with IndexedDB How to Store Unlimited* Data in the Browser with IndexedDB

memeriksa ruang sokongan dan ruang penyimpanan indexeddb:

<code class="language-javascript">if ('indexedDB' in window) {
  // IndexedDB supported
} else {
  console.log('IndexedDB is not supported.');
}

(async () => {
  if (!navigator.storage) return;
  const estimate = await navigator.storage.estimate();
  const available = Math.floor((estimate.quota - estimate.usage) / 1024 / 1024);
  // Check available space and proceed accordingly
})();</code>
Membuka Sambungan IndexedDB:

<code class="language-javascript">const dbOpen = indexedDB.open('notebook', 1);

dbOpen.onupgradeneeded = event => {
  const db = dbOpen.result;
  // Create object stores and indexes here
};

dbOpen.onerror = err => {
  console.error(`indexedDB error: ${err.errorCode}`);
};

dbOpen.onsuccess = () => {
  const db = dbOpen.result;
  // Use the db connection for further operations
};</code>
(bahagian seterusnya yang memperincikan operasi CRUD, kemas kini skema, dan penggunaan kursor ditinggalkan untuk keringkasan, tetapi tindak balas asal memberikan contoh yang komprehensif.)

Soalan Lazim (Soalan Lazim):

Sambutan asal termasuk seksyen FAQ yang komprehensif yang meliputi saiz storan maksimum, mengendalikan dataset besar, batas penyimpanan melebihi, peningkatan had penyimpanan, pemeriksaan penggunaan, ketekunan data, penyimpanan objek gumpalan, keselamatan, penggunaan pekerja, dan pengendalian ralat. Ini semua ditangani secara terperinci dalam output asal.

Atas ialah kandungan terperinci Cara menyimpan data tanpa had* dalam penyemak imbas dengan indexeddb. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn