การอัปเดตพื้นที่เก็บข้อมูลที่ใช้ร่วมกันและ URL บางรายการ: Worklet ข้ามแหล่งที่มา และการค้นหาที่บันทึกไว้

Tara Agyemang
Tara Agyemang

Chrome 130 มีการเปิดตัวการเปลี่ยนแปลงใน Shared Storage API เพื่อเปิดใช้สคริปต์เวิร์กเลตข้ามแหล่งที่มากับ createWorklet() และ addModule() นอกจากนี้ เรายังเปิดตัวการอัปเดต Select URL API ที่มีพื้นที่เก็บข้อมูลที่ใช้ร่วมกันใน Chrome 132 ซึ่งรองรับการค้นหาที่บันทึกไว้

แผนภาพที่แสดงเว็บไซต์ที่ลงทะเบียนสามารถเขียนข้อมูลคีย์/ค่าประเภทใดก็ได้ลงในพื้นที่เก็บข้อมูลที่ใช้ร่วมกัน แต่การอ่านข้อมูลออกจะจํากัดไว้เฉพาะ API เอาต์พุตที่เฉพาะเจาะจง
Shared Storage API อนุญาตให้เว็บไซต์ที่ลงทะเบียนเขียนข้อมูลคีย์/ค่าประเภทใดก็ได้ลงในพื้นที่เก็บข้อมูลที่ใช้ร่วมกัน แต่การอ่านข้อมูลออกจะจํากัดไว้เฉพาะ Output API บางรายการ

Worklet แบบข้ามแหล่งที่มาด้วย Shared Storage API ใน Chrome 130

เราได้เปิดตัวการเปลี่ยนแปลง Shared Storage API ใน Chrome 130 เพื่อให้คุณมีความยืดหยุ่นมากขึ้นเมื่อทำงานกับสคริปต์ Worklet ข้ามแหล่งที่มา

มีอะไรเปลี่ยนแปลงบ้าง

เราได้นําข้อจํากัดต้นทางเดียวกันออกสําหรับ addModule() แล้ว ตอนนี้คุณจึงโหลดสคริปต์เวิร์กเลตจากต้นทางใดก็ได้ สคริปต์เวิร์กเล็ตข้ามแหล่งที่มาช่วยให้ใช้กรณีการใช้งานที่สำคัญได้ เช่น โฮสต์สคริปต์เวิร์กเล็ตใน CDN เมื่อสคริปต์เวิร์กเลตมาจากแหล่งที่มาอื่นนอกเหนือจากบริบทการท่องเว็บที่เรียกใช้ ระบบจะใช้ต้นทางของบริบทที่เรียกใช้เป็นแหล่งที่มาของพาร์ติชันข้อมูลสำหรับการเข้าถึงพื้นที่เก็บข้อมูลที่ใช้ร่วมกัน

เราได้เพิ่มพร็อพเพอร์ตี้ dataOrigin ลงในคําเรียก createWorklet() เพื่ออนุญาตให้อ่านและเขียนลงในพาร์ติชันข้อมูลพื้นที่เก็บข้อมูลที่ใช้ร่วมกันซึ่งแตกต่างจากบริบทการเรียกดูที่เรียกใช้ เพื่อให้การทำงานสอดคล้องกับลักษณะการทำงานใหม่ของ addModule() และลดความสับสนที่อาจเกิดขึ้น วิธีนี้ช่วยให้คุณควบคุมได้ละเอียดมากขึ้นว่าจะให้แต่ละเวิร์กเลตเข้าถึงพื้นที่เก็บข้อมูลร่วมของต้นทางใด แม้ว่าจะใช้สคริปต์เวิร์กเลตข้ามแหล่งที่มาก็ตาม

มีอะไรเปลี่ยนแปลงบ้าง

ตั้งแต่ Chrome 125 เป็นต้นไป สคริปต์ข้ามแหล่งที่มาของบุคคลที่สามในหน้าเว็บสามารถสร้างเวิร์กเลตข้ามแหล่งที่มาได้โดยไม่ต้องใช้ iframe ข้ามแหล่งที่มาโดยการเรียกใช้ createWorklet(url) ก่อนหน้านี้ createWorklet(url) ใช้ต้นทาง URL (url) ของสคริปต์เป็นต้นทางของพาร์ติชันข้อมูล โดยไม่คำนึงถึงบริบทการเรียกใช้

ใน Chrome 130 createWorklet()จะใช้บริบทการเรียกใช้เป็นแหล่งที่มาของพาร์ติชันข้อมูลเริ่มต้นด้วย เพื่อให้สอดคล้องกับลักษณะการทำงานใหม่ของ addModule() หากต้องการใช้ต้นทาง URL สคริปต์เป็นต้นทางของพาร์ติชันข้อมูลต่อไป เราจะเปิดตัวพร็อพเพอร์ตี้ใหม่ dataOrigin เพื่อช่วยให้คุณตั้งค่าต้นทางของพาร์ติชันข้อมูลได้อย่างชัดเจน

พร็อพเพอร์ตี้ dataOrigin ใหม่ยอมรับ "script-origin" ซึ่งจะตั้งค่าต้นทางของพาร์ติชันข้อมูลเป็นต้นทางของสคริปต์ และ "context-origin" ซึ่งจะตั้งค่าต้นทางของพาร์ติชันข้อมูลเป็นต้นทางของบริบทการท่องเว็บที่เรียกใช้ ในรุ่นที่จะเปิดตัวในอนาคต เราวางแผนที่จะรองรับต้นทางของพาร์ติชันข้อมูลที่กําหนดเองด้วย ซึ่งสคริปต์ของเวิร์กเลตจะเข้าถึงข้อมูลพื้นที่เก็บข้อมูลที่แชร์จากต้นทางใดก็ได้โดยขึ้นอยู่กับการเลือกรับ

เมื่อโหลดสคริปต์ข้ามแหล่งที่มาโดยตั้งค่าแหล่งที่มาของข้อมูลเป็น "script-origin" คำขอสคริปต์ที่ส่งจากเบราว์เซอร์จะมีส่วนหัว "Sec-Shared-Storage-Data-Origin: <origin>" หากต้องการเปิดใช้ ในสคริปต์จะต้องมีส่วนหัวการตอบกลับ"Shared-Storage-Cross-Origin-Worklet-Allowed: ?1"การเลือกใช้ด้วย

How to use

หากใช้ createWorklet() อยู่แล้วโดยที่ต้นทางสคริปต์เป็นต้นทางของพาร์ติชันข้อมูลของเวิร์กเลต ให้ตั้งค่า dataOrigin ดังนี้

sharedStorage.createWorklet(scriptUrl, {dataOrigin: "script-origin"});

เนื่องจาก createWorklet() อนุญาตให้สร้างการแบ่งพาร์ติชันข้อมูลข้ามแหล่งที่มาและการสร้างเวิร์กเลตหลายรายการ เราจึงขอแนะนำให้เปลี่ยนไปใช้ createWorklet() แทนการใช้ addModule()

เราได้อัปเดตเอกสารประกอบสำหรับนักพัฒนาแอปเพื่อให้สอดคล้องกับการเปลี่ยนแปลงเหล่านี้และเพื่อเป็นแนวทางเพิ่มเติม

การค้นหาที่บันทึกไว้ด้วย Select URL API ใน Chrome 132

เราขอแนะนำการอัปเดต Select URL API ที่มีพื้นที่เก็บข้อมูลที่ใช้ร่วมกันใน Chrome 132 ซึ่งรองรับการค้นหาที่บันทึกไว้

สิ่งที่จะเปลี่ยนแปลง

ปัจจุบัน Select URL API มีงบประมาณต่อหน้าเว็บ 2 รายการที่จำกัดจำนวนการเรียก API ในการโหลดหน้าเว็บแต่ละครั้ง เราขอแนะนำความสามารถในการบันทึกและนําการค้นหามาใช้ซ้ำในแต่ละหน้า เมื่อคุณใช้คําค้นหาที่บันทึกไว้ ระบบจะเรียกเก็บงบประมาณต่อการโหลดหน้าเว็บ 1 ครั้งเมื่อเรียกใช้คําค้นหาที่บันทึกไว้เป็นครั้งแรก แต่จะไม่เรียกเก็บสําหรับการเรียกใช้คําค้นหาที่บันทึกไว้ครั้งต่อๆ ไปในระหว่างการโหลดหน้าเว็บเดียวกัน

วิธีใช้การค้นหาที่บันทึกไว้

ตั้งแต่ Chrome เวอร์ชัน 132 เป็นต้นไป คุณจะใช้พารามิเตอร์ savedQuery ในตัวเลือกสำหรับ selectURL() ได้โดยระบุชื่อการค้นหาดังนี้

await sharedStorage.selectURL('experiment', urls, {
  savedQuery: 'control_or_experiment',
  keepAlive: true
});

ใช้ชื่อ savedQuery เดียวกันสําหรับการเรียกใช้ selectURL() ทุกครั้งเพื่อให้มั่นใจว่าจะมีการเรียกเก็บเงินสําหรับการค้นหาที่ตามมาจากงบประมาณเดียวกัน

เราได้อัปเดตเอกสารประกอบเพื่อแสดงการเปลี่ยนแปลงเหล่านี้และระบุรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดงบประมาณสำหรับ selectURL()

มีส่วนร่วมและแชร์ความคิดเห็น

โปรดทราบว่าข้อเสนอ Shared Storage API อยู่ระหว่างการพูดคุยและการพัฒนาอย่างต่อเนื่อง จึงอาจมีการเปลี่ยนแปลง

เรายินดีรับฟังความคิดเห็นของคุณเกี่ยวกับ Shared Storage API

ติดตามข้อมูลอยู่เสมอ

  • รายชื่ออีเมล: สมัครรับอีเมลจากรายชื่ออีเมลของเราเพื่อรับข้อมูลอัปเดตและประกาศล่าสุดเกี่ยวกับ Shared Storage API

หากต้องการความช่วยเหลือ