IndexedDB คืออะไร
IndexedDB เป็นมาตรฐานเว็บที่เปลี่ยนแปลงไปเพื่อจัดเก็บข้อมูลที่มีโครงสร้างปริมาณมากในเบราว์เซอร์ และสำหรับการค้นหาข้อมูลนี้ที่มีประสิทธิภาพสูงโดยใช้ดัชนี กล่าวคือ IndexedDB เป็นที่เก็บออบเจ็กต์ ซึ่งไม่เหมือนกับฐานข้อมูลเชิงสัมพันธ์ที่มีตารางที่มีแถวและคอลัมน์ของคอลเล็กชัน ซึ่งถือเป็นความแตกต่างที่สำคัญและเป็นพื้นฐานซึ่งส่งผลต่อวิธีที่คุณออกแบบและสร้างแอปพลิเคชัน (ดูข้อมูลเพิ่มเติมเกี่ยวกับแนวคิดพื้นฐาน
มีอะไรใหม่
เปลี่ยนเพื่อนของฉัน... เรามีการเปลี่ยนแปลงบางอย่างจะทำให้เกิดข้อผิดพลาด ถ้าเราไม่จัดการกับเพื่อนเหล่านี้ด้วยการเปลี่ยนแปลงไวยากรณ์อย่างง่าย
ตั้งแต่เวอร์ชัน 17 เป็นต้นไป Chrome จะแสดงข้อผิดพลาดหากธุรกรรม IndexedDB ไม่ได้กำหนดขอบเขตไปยังที่เก็บวัตถุ เนื่องจากการอ่านและเขียนข้อมูลทั้งหมดจะดำเนินการภายในธุรกรรม เราจึงจำเป็นต้องสร้างธุรกรรมบนฐานข้อมูล ระบุขอบเขต (เช่น ที่เก็บออบเจ็กต์ใดที่คุณต้องการเข้าถึง) และระบุประเภทการเข้าถึง (อ่านอย่างเดียวหรือเขียน)
โค้ดนี้หมายถึงอะไร แทนการส่งอาร์เรย์ว่างไปยัง Database.transaction ของเรา:
var transaction = db.transaction([], IDBTransaction.READ_ONLY);
คุณควรกำหนดขอบเขตเป็นที่เก็บออบเจ็กต์ที่เจาะจงหรือรายการ Store ของออบเจ็กต์ ดังนี้
// 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
- ตัวอย่างที่สมบูรณ์เกี่ยวกับวิธีใช้ indexDB ในเว็บแอปรายการสิ่งที่ต้องทำอย่างง่าย
คราวหน้าขอให้ได้เลื่อนขั้นเว็บไปให้ใกล้พื้นที่หลายๆ แห่งแทนนะ