IndexedDB คืออะไร
IndexedDB เป็นมาตรฐานเว็บที่พัฒนาอย่างต่อเนื่องสำหรับการจัดเก็บ Structured Data จำนวนมากในเบราว์เซอร์ และสำหรับการค้นหาประสิทธิภาพสูงในข้อมูลนี้โดยใช้ดัชนี กล่าวคือ IndexedDB คือที่เก็บข้อมูลออบเจ็กต์ ซึ่งแตกต่างจากฐานข้อมูลเชิงสัมพันธ์ซึ่งมีตารางที่มีแถวและคอลัมน์ของคอลเล็กชัน ความแตกต่างนี้สำคัญและพื้นฐานอย่างยิ่ง ซึ่งส่งผลต่อวิธีออกแบบและสร้างแอปพลิเคชัน (ดูข้อมูลเพิ่มเติมในแนวคิดพื้นฐาน)
มีอะไรใหม่บ้าง
การเปลี่ยนแปลงเพื่อน... เรามีการเปลี่ยนแปลงบางอย่างที่จะแสดงข้อผิดพลาดหากเราไม่จัดการด้วยการเปลี่ยนแปลงไวยากรณ์ง่ายๆ
ตั้งแต่เวอร์ชัน 17 เป็นต้นไป Chrome จะแสดงข้อผิดพลาดหากธุรกรรม IndexedDB ไม่ได้กำหนดขอบเขตไว้สำหรับที่เก็บออบเจ็กต์ เนื่องจากการอ่านและการเขียนข้อมูลทั้งหมดเกิดขึ้นภายในธุรกรรม เราจึงต้องสร้างธุรกรรมในฐานข้อมูล ระบุขอบเขต (เช่น ออบเจ็กต์สตอเรจที่คุณต้องการเข้าถึง) และกำหนดประเภทการเข้าถึง (อ่านอย่างเดียวหรือเขียน)
หมายความว่าอย่างไรในโค้ด แทนที่จะส่งอาร์เรย์ว่างไปยัง database.transaction ให้ทำดังนี้
var transaction = db.transaction([], IDBTransaction.READ_ONLY);
คุณควรกําหนดขอบเขตเป็นออบเจ็กต์สตอเรจหรือรายการออบเจ็กต์สตอเรจที่เฉพาะเจาะจง ดังนี้
// all stores (equivalent to what use to be marked as empty array. )
var transaction = db.transaction(db.objectStoreNames, IDBTransaction.READ_ONLY);
// multiple stores:
var transaction = db.transaction(['ObjectStoreName1', 'ObjectStoreName2'],
IDBTransaction.READ_ONLY);
// single store - these are equivalent
var transaction = db.transaction(['ObjectStoreName'], IDBTransaction.READ_ONLY);
var transaction = db.transaction('ObjectStoreName', IDBTransaction.READ_ONLY);
คุณเพิ่มความเร็วในการเข้าถึงข้อมูลได้โดยใช้ขอบเขตและโหมดที่เหมาะสมในธุรกรรม เคล็ดลับ 2 ข้อมีดังนี้
เมื่อกําหนดขอบเขต ให้ระบุเฉพาะที่เก็บออบเจ็กต์ที่จําเป็น วิธีนี้ช่วยให้คุณเรียกใช้ธุรกรรมหลายรายการที่มีขอบเขตไม่ทับซ้อนกันพร้อมกันได้
ระบุโหมดธุรกรรม READ_WRITE
เมื่อจําเป็นเท่านั้น คุณเรียกใช้ธุรกรรม READ_ONLY
หลายรายการพร้อมกันซึ่งมีขอบเขตทับซ้อนกันได้ แต่จะมีธุรกรรม READ_WRITE
รายการเดียวสำหรับที่เก็บออบเจ็กต์ได้
แหล่งที่มาอื่นๆ
- การอัปเดตใน chromium.org
- รายละเอียดเพิ่มเติมเกี่ยวกับ IndexedDB ที่ MDN
- ตัวอย่างแบบเต็มเกี่ยวกับวิธีใช้ IndexedDB ในเว็บแอปรายการสิ่งที่ต้องทําแบบง่าย
ไว้พบกันใหม่