From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- files/th/web/api/indexeddb_api/index.html | 308 ++++++++++++++++++++++++++++++ 1 file changed, 308 insertions(+) create mode 100644 files/th/web/api/indexeddb_api/index.html (limited to 'files/th/web/api/indexeddb_api') diff --git a/files/th/web/api/indexeddb_api/index.html b/files/th/web/api/indexeddb_api/index.html new file mode 100644 index 0000000000..15c6eaf802 --- /dev/null +++ b/files/th/web/api/indexeddb_api/index.html @@ -0,0 +1,308 @@ +--- +title: IndexedDB API +slug: Web/API/IndexedDB_API +translation_of: Web/API/IndexedDB_API +--- +
{{DefaultAPISidebar ( "IndexedDB")}}
+ +

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 จะใช้นโยบายแหล่งกำเนิดเดียวกัน ดังนั้นในขณะที่คุณสามารถเข้าถึงข้อมูลที่เก็บไว้ภายในโดเมนคุณจะไม่สามารถเข้าถึงข้อมูลในโดเมนต่างๆได้

+
+ +

Synchronous และ Asynchronous

+ +

การดำเนินงานที่ดำเนินการโดยใช้ IndexedDB ทำแบบอะซิงโครนัสเพื่อไม่ให้บล็อกแอพพลิเคชัน IndexedDB เดิมรวม APIs แบบซิงโครนัสและ  แบบอะซิงโครนัส API ซิงโครนัสมีไว้สำหรับใช้กับWeb Workersเท่านั้น แต่ถูกนำออกจาก spec เนื่องจากไม่ชัดเจนว่าจำเป็นหรือไม่ อย่างไรก็ตาม   API แบบซิงโครนัส  อาจได้รับคำแนะนำใหม่หากมีความต้องการเพียงพอจากนักพัฒนาเว็บ

+ +

ข้อ จำกัด ในการจัดเก็บและเกณฑ์การขับไล่

+ +

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

+ +

อินเตอร์เฟซ

+ +

เมื่อต้องการเข้าถึงฐานข้อมูลให้เรียกopen()ใช้indexedDBแอ็ตทริบิวต์ของออบเจ็กต์หน้าต่าง เมธอดนี้ส่งกลับค่า {{domxref ("IDBRequest")}} object; การดำเนินการแบบอะซิงโครนัสจะสื่อสารกับแอพพลิเคชันการเรียกโดยการยิงเหตุการณ์บน {{domxref ("IDBRequest")}} วัตถุ

+ +

กำลังเชื่อมต่อกับฐานข้อมูล

+ +
+
{{domxref ( "IDBEnvironment")}}
+
ให้การเข้าถึงฟังก์ชันการทำงาน IndexedDB มีการใช้งานโดย {{domxref ("window")}} และวัตถุ {{domxref ("worker")}} อินเทอร์เฟซนี้ไม่ใช่ส่วนหนึ่งของข้อกำหนด 2.0
+
{{domxref ( "IDBFactory")}}
+
ให้การเข้าถึงฐานข้อมูล นี่คืออินเทอร์เฟซที่ใช้งานโดยอ็อบเจ็กต์ทั่วโลกindexedDBและเป็นจุดเริ่มต้นของ API
+
{{domxref ( "IDBOpenDBRequest")}}
+
หมายถึงคำขอให้เปิดฐานข้อมูล
+
{{domxref ( "IDBDatabase")}}
+
หมายถึงการเชื่อมต่อกับฐานข้อมูล เป็นวิธีเดียวที่จะได้รับธุรกรรมในฐานข้อมูล
+
กำลังเรียกและแก้ไขข้อมูล
+
+ +
+
{{domxref ( "IDBTransaction")}}
+
หมายถึงธุรกรรม คุณสร้างธุรกรรมในฐานข้อมูลระบุขอบเขต (เช่นที่เก็บออบเจ็กต์ที่คุณต้องการเข้าถึง) และกำหนดชนิดของการเข้าถึง (อ่านอย่างเดียวหรือเขียน readwrite) ที่คุณต้องการ
+
{{domxref ( "IDBRequest")}}
+
อินเทอร์เฟซทั่วไปที่จัดการคำขอฐานข้อมูลและให้การเข้าถึงผลการค้นหา
+
{{domxref ( "IDBObjectStore")}}
+
หมายถึงเก็บออบเจ็กต์ที่อนุญาตให้เข้าถึงชุดข้อมูลในฐานข้อมูล IndexedDB โดยค้นหาคีย์หลัก
+
{{domxref ( "IDBIndex")}}
+
นอกจากนี้ยังช่วยให้สามารถเข้าถึงชุดย่อยของข้อมูลในฐานข้อมูล IndexedDB ได้ แต่ใช้ดัชนีเพื่อดึงข้อมูลระเบียนแทนที่จะเป็นคีย์หลัก บางครั้งก็เร็วกว่าการใช้ {{domxref ("IDBObjectStore")}}
+
{{domxref ( "IDBCursor")}}
+
Iterates มากกว่าเก็บวัตถุและดัชนี
+
{{domxref ( "IDBCursorWithValue")}}
+
Iterates มากกว่าเก็บวัตถุและดัชนีและส่งกลับค่าปัจจุบันของเคอร์เซอร์
+
{{domxref ( "IDBKeyRange")}}
+
กำหนดช่วงสำคัญที่สามารถใช้เพื่อดึงข้อมูลจากฐานข้อมูลในช่วงที่กำหนด
+
{{domxref ("IDBLocaleAwareKeyRange")}} {{Non-standard_inline}}
+
กำหนดช่วงที่สำคัญที่สามารถนำมาใช้เพื่อดึงข้อมูลจากฐานข้อมูลในช่วงที่กำหนดซึ่งจัดเรียงตามกฎของโลแคลที่ระบุสำหรับดัชนีที่ระบุ (โปรดดูที่createIndex()พารามิเตอร์ที่ไม่บังคับ ) อินเทอร์เฟซนี้ไม่ใช่ส่วนหนึ่งของข้อกำหนด 2.0
+
+ +

อินเทอร์เฟซเหตุการณ์ที่กำหนดเอง

+ +

ข้อกำหนดนี้จะเริ่มต้นกิจกรรมด้วยอินเทอร์เฟซที่กำหนดเองต่อไปนี้:

+ +
+
{{domxref ( "IDBVersionChangeEvent")}}
+
IDBVersionChangeEventอินเตอร์เฟซแสดงให้เห็นว่ารุ่นของฐานข้อมูลที่มีการเปลี่ยนแปลงเป็นผลมาจากการ {{domxref ( "IDBOpenDBRequest.onupgradeneeded")}} ฟังก์ชั่นจัดการเหตุการณ์
+
+ +

อินเตอร์เฟซล้าสมัย

+ +

เวอร์ชันก่อนหน้าของข้อกำหนดยังกำหนดการเชื่อมต่อที่ลบออกไปแล้วในขณะนี้ เอกสารเหล่านี้จะได้รับการจัดทำเป็นเอกสารไว้ในกรณีที่คุณจำเป็นต้องอัพเดตโค้ดที่เขียนไว้ก่อนหน้านี้:

+ +
+
{{domxref ("IDBVersionChangeRequest")}} {{obsolete_inline}}
+
หมายถึงคำขอให้เปลี่ยนเวอร์ชันของฐานข้อมูล วิธีเปลี่ยนเวอร์ชันของฐานข้อมูลได้เปลี่ยนไปแล้ว (โดยเรียก {{domxref ("IDBFactory.open")}} โดยไม่ต้องเรียก {{domxref ("IDBDatabase.setVersion")}}) และอินเทอร์เฟซ {{domxref ("IDBOpenDBRequest")}} มีฟังก์ชันการทำงานของ {{domxref ("IDBVersionChangeRequest")}} ที่ถูกลบ
+
{{domxref ("IDBDatabaseException")}} {{obsolete_inline}}
+
หมายถึงสภาวะข้อยกเว้นที่สามารถพบได้ในขณะดำเนินการฐานข้อมูล
+
{{domxref ("IDBTransactionSync")}} {{obsolete_inline}}
+
ซิงค์เวอร์ชันของ {{domxref ("IDBTransaction")}}
+
{{domxref ("IDBObjectStoreSync")}} {{obsolete_inline}}
+
ซิงค์เวอร์ชันของ {{domxref ("IDBObjectStore")}}
+
{{domxref ("IDBIndexSync")}} {{obsolete_inline}}
+
ซิงค์เวอร์ชันของ {{domxref ("IDBIndex")}}
+
{{domxref ("IDBFactorySync")}} {{obsolete_inline}}
+
ซิงค์เวอร์ชันของ {{domxref ("IDBFactory")}}
+
{{domxref ("IDBEnvironmentSync")}} {{obsolete_inline}}
+
ซิงค์เวอร์ชันของ {{domxref ("IDBEnvironment")}}
+
{{domxref ("IDBDatabaseSync")}} {{obsolete_inline}}
+
ซิงค์เวอร์ชัน {{domxref ("IDBDatabase")}}
+
{{domxref ("IDBCursorSync")}} {{obsolete_inline}}
+
ซิงค์เวอร์ชันของ {{domxref ("IDBCursor")}}
+
+ +

ตัวอย่าง

+ + + +

ข้อมูลจำเพาะ

+ + + + + + + + + + + + + + + + + + + +
สเปคสถานะคิดเห็น
{{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")}}
1015 +

7.1 ส่วนที่
+ 10

+
มีอยู่ในคนงาน{{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 WebviewChrome สำหรับแอนดรอยด์ขอบFirefox Mobile (ตุ๊กแก)Firefox OSโทรศัพท์ IE / EdgeOpera MobileSafari มือถือ
การสนับสนุนขั้นพื้นฐาน{{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน)
+ {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
+ {{CompatChrome (57)}} (นำหน้านำหน้าออก)
{{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน)
+ {{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
+ {{CompatChrome (57)}} (นำหน้านำหน้าออก)
{{CompatVersionUnknown}}{{CompatGeckoMobile ( "22.0")}}1.0.110{{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}}
+
+ + + +

ดูสิ่งนี้ด้วย

+ + -- cgit v1.2.3-54-g00ecf