--- title: IndexedDB API slug: Web/API/IndexedDB_API translation_of: Web/API/IndexedDB_API ---
IndexedDB เป็น API ระดับต่ำสำหรับการจัดเก็บข้อมูลจำนวนมากของโครงสร้างข้อมูลรวมถึงไฟล์ / blobs API นี้ใช้ดัชนีเพื่อให้สามารถค้นหาข้อมูลนี้ได้อย่างมีประสิทธิภาพสูง แม้ว่าที่เก็บข้อมูลเว็บจะเป็นประโยชน์สำหรับการจัดเก็บข้อมูลจำนวนน้อย แต่จะไม่ค่อยมีประโยชน์ในการจัดเก็บข้อมูลที่มีโครงสร้างจำนวนมาก IndexedDB มีวิธีแก้ปัญหา นี่คือหน้า Landing Page หลักสำหรับความครอบคลุม IndexedDB ของ MDN - ที่นี่เรามีลิงก์ไปยังคู่มืออ้างอิงและคู่มือการใช้งาน API แบบเต็มรูปแบบรายละเอียดการสนับสนุนเบราเซอร์และคำอธิบายเกี่ยวกับแนวคิดหลัก ๆ
{{AvailableInWorkers}}
หมายเหตุ : IndexedDB API มีประสิทธิภาพ แต่อาจดูเหมือนซับซ้อนเกินไปสำหรับกรณีง่ายๆ ถ้าคุณต้องการ API แบบธรรมดาลองใช้ไลบรารีเช่น localForage , dexie.js , ZangoDB และJsStoreที่ทำให้ IndexedDB เป็นโปรแกรมเมอร์ที่เป็นมิตรมากขึ้น
IndexedDB เป็นระบบฐานข้อมูลการทำธุรกรรมเช่น RDBMS แบบ SQL แต่แตกต่างจาก RDBMSes ที่ใช้ SQL ซึ่งใช้ตารางคอลัมน์ถาวร IndexedDB เป็นฐานข้อมูลเชิงวัตถุที่ใช้ JavaScript IndexedDB ช่วยให้คุณสามารถจัดเก็บและดึงวัตถุที่มีการสร้างดัชนีด้วยที่สำคัญ ; วัตถุใด ๆ ที่สนับสนุนโดยอัลกอริทึมโคลนที่มีโครงสร้างสามารถจัดเก็บได้ คุณต้องระบุคีมาฐานข้อมูลเปิดการเชื่อมต่อกับฐานข้อมูลของคุณและจากนั้นดึงข้อมูลและปรับปรุงข้อมูลภายในชุดของการทำธุรกรรม
หมายเหตุ : เช่นเดียวกับโซลูชันการจัดเก็บข้อมูลเว็บส่วนใหญ่ IndexedDB จะใช้นโยบายแหล่งกำเนิดเดียวกัน ดังนั้นในขณะที่คุณสามารถเข้าถึงข้อมูลที่เก็บไว้ภายในโดเมนคุณจะไม่สามารถเข้าถึงข้อมูลในโดเมนต่างๆได้
การดำเนินงานที่ดำเนินการโดยใช้ IndexedDB ทำแบบอะซิงโครนัสเพื่อไม่ให้บล็อกแอพพลิเคชัน IndexedDB เดิมรวม APIs แบบซิงโครนัสและ แบบอะซิงโครนัส API ซิงโครนัสมีไว้สำหรับใช้กับWeb Workersเท่านั้น แต่ถูกนำออกจาก spec เนื่องจากไม่ชัดเจนว่าจำเป็นหรือไม่ อย่างไรก็ตาม API แบบซิงโครนัส อาจได้รับคำแนะนำใหม่หากมีความต้องการเพียงพอจากนักพัฒนาเว็บ
มีเทคโนโลยีเว็บจำนวนหนึ่งที่เก็บข้อมูลประเภทเดียวกันหรือแบบอื่นทางฝั่งไคลเอ็นต์ (เช่นบนดิสก์ภายในเครื่อง) IndexedDB เป็นเรื่องที่พูดถึงกันมากที่สุด กระบวนการที่เบราว์เซอร์ทำงานได้ว่าจะจัดสรรพื้นที่ในการจัดเก็บข้อมูลเว็บมากน้อยเพียงใดและจะลบอะไรเมื่อถึงขีด จำกัด นั้นไม่ง่ายและแตกต่างกันระหว่างเบราว์เซอร์ ขีด จำกัด ของพื้นที่เก็บข้อมูลเบราเซอร์และเกณฑ์การขับไล่พยายามอธิบายวิธีการทำงานนี้อย่างน้อยที่สุดในกรณีของ Firefox
เมื่อต้องการเข้าถึงฐานข้อมูลให้เรียกopen()
ใช้indexedDB
แอ็ตทริบิวต์ของออบเจ็กต์หน้าต่าง เมธอดนี้ส่งกลับค่า {{domxref ("IDBRequest")}} object; การดำเนินการแบบอะซิงโครนัสจะสื่อสารกับแอพพลิเคชันการเรียกโดยการยิงเหตุการณ์บน {{domxref ("IDBRequest")}} วัตถุ
indexedDB
และเป็นจุดเริ่มต้นของ APIcreateIndex()
พารามิเตอร์ที่ไม่บังคับ ) อินเทอร์เฟซนี้ไม่ใช่ส่วนหนึ่งของข้อกำหนด 2.0ข้อกำหนดนี้จะเริ่มต้นกิจกรรมด้วยอินเทอร์เฟซที่กำหนดเองต่อไปนี้:
IDBVersionChangeEvent
อินเตอร์เฟซแสดงให้เห็นว่ารุ่นของฐานข้อมูลที่มีการเปลี่ยนแปลงเป็นผลมาจากการ {{domxref ( "IDBOpenDBRequest.onupgradeneeded")}} ฟังก์ชั่นจัดการเหตุการณ์เวอร์ชันก่อนหน้าของข้อกำหนดยังกำหนดการเชื่อมต่อที่ลบออกไปแล้วในขณะนี้ เอกสารเหล่านี้จะได้รับการจัดทำเป็นเอกสารไว้ในกรณีที่คุณจำเป็นต้องอัพเดตโค้ดที่เขียนไว้ก่อนหน้านี้:
สเปค | สถานะ | คิดเห็น |
---|---|---|
{{SpecName ( 'IndexedDB')}} | {{Spec2 ( 'IndexedDB')}} | ความหมายเบื้องต้น |
{{SpecName ("IndexedDB 2")}} | {{Spec2 ("IndexedDB 2")}} |
{{CompatibilityTable}}
ลักษณะ | โครเมียม | ขอบ | Firefox (ตุ๊กแก) | Internet Explorer | อุปรากร | Safari (WebKit) |
---|---|---|---|---|---|---|
การสนับสนุนขั้นพื้นฐาน | {{CompatChrome (23)}} {{property_prefix ("webkit")}} {{CompatChrome (24)}} (ไม่เป็นที่รู้จัก) {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว) {{CompatChrome (57)}} ( คำนำหน้านำออก) |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop ("10.0")}} {{property_prefix ("moz")}} {{CompatGeckoDesktop ("16.0")}} |
10 | 15 |
7.1 ส่วนที่ |
มีอยู่ในคนงาน | {{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน) {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว) {{CompatChrome (57)}} (นำหน้านำหน้าออก) |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop ("37.0")}} [1] | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | 10 |
ใช้ได้ในโหมดความเป็นส่วนตัว[3] | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
IDBLocaleAwareKeyRange |
{{CompatNo}} | {{CompatNo}} | {{CompatGeckoDesktop ("43.0")}} [2] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
ฐานข้อมูลที่ทำดัชนี 2.0 | {{CompatChrome (58)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOpera (45)}} | {{CompatUnknown}} |
ลักษณะ | Android Webview | Chrome สำหรับแอนดรอยด์ | ขอบ | Firefox Mobile (ตุ๊กแก) | Firefox OS | โทรศัพท์ IE / Edge | Opera Mobile | Safari มือถือ |
---|---|---|---|---|---|---|---|---|
การสนับสนุนขั้นพื้นฐาน | {{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน) {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว) {{CompatChrome (57)}} (นำหน้านำหน้าออก) |
{{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน) {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว) {{CompatChrome (57)}} (นำหน้านำหน้าออก) |
{{CompatVersionUnknown}} | {{CompatGeckoMobile ( "22.0")}} | 1.0.1 | 10 | {{CompatOpera (22)}} | 8 บางส่วน 10 |
มีอยู่ในคนงาน | {{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน) {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว) {{CompatChrome (57)}} (นำหน้านำหน้าออก) |
{{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน) {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว) {{CompatChrome (57)}} (นำหน้านำหน้าออก) |
{{CompatVersionUnknown}} | {{CompatGeckoMobile ("37.0")}} [1] | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | 10 |
ใช้ได้ในโหมดความเป็นส่วนตัว[3] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} |
IDBLocaleAwareKeyRange |
{{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile ("43.0")}} [2] | 2.5 [2] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
ฐานข้อมูลที่ทำดัชนี 2.0 | {{CompatChrome (58)}} | {{CompatChrome (58)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOpera (45)}} | {{CompatUnknown}} |