การแยกแบบข้ามต้นทางช่วยให้หน้าเว็บใช้ฟีเจอร์ที่มีประสิทธิภาพ เช่น SharedArrayBuffer ได้ บทความนี้จะอธิบายวิธีเปิดใช้การแยกแบบข้ามต้นทางในเว็บไซต์
คู่มือนี้จะแสดงวิธีเปิดใช้การแยกแบบข้ามต้นทาง คุณต้องเปิดใช้การแยกแบบข้ามต้นทางหากต้องการใช้
SharedArrayBuffer,
performance.measureUserAgentSpecificMemory(),
หรือ ตัวจับเวลาความละเอียดสูงที่มีความแม่นยำมากขึ้น
หากต้องการเปิดใช้การแยกแบบข้ามต้นทาง ให้ประเมินผลกระทบที่จะเกิดขึ้นกับทรัพยากรแบบข้ามต้นทางอื่นๆ ในเว็บไซต์ เช่น พื้นที่โฆษณา
ระบุตำแหน่งที่ใช้ SharedArrayBuffer ในเว็บไซต์
ตั้งแต่ Chrome 92 เป็นต้นไป ฟังก์ชันการทำงานที่ใช้ SharedArrayBuffer
จะไม่ทำงานอีกต่อไปหากไม่มีการแยกแบบข้ามต้นทาง หากคุณมาที่หน้านี้
เนื่องจากข้อความการเลิกใช้งาน SharedArrayBuffer แสดงว่าเว็บไซต์หรือทรัพยากรอย่างน้อย 1 รายการที่ฝังอยู่ในเว็บไซต์ใช้ SharedArrayBuffer
เริ่มต้นด้วยการ
ระบุตำแหน่งที่ใช้เพื่อให้แน่ใจว่าไม่มีสิ่งใดเสียหายในเว็บไซต์เนื่องจากการเลิกใช้งาน
หากไม่แน่ใจว่ามีการใช้ SharedArrayBuffer ที่ใดในเว็บไซต์ ให้ดูได้ 2 วิธีดังนี้
- การใช้เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
- (ขั้นสูง) การใช้การรายงานการเลิกใช้งาน
หากทราบตำแหน่งที่ใช้ SharedArrayBuffer อยู่แล้ว ให้ข้ามไปที่ วิเคราะห์ผลกระทบของการแยกแบบข้ามต้นทาง
การใช้เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome ช่วยให้นักพัฒนาเว็บตรวจสอบเว็บไซต์ได้
- เปิดเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome ในหน้าที่คุณสงสัยว่าอาจใช้
SharedArrayBuffer - เลือกแผงคอนโซล
- หากหน้าเว็บใช้
SharedArrayBufferข้อความต่อไปนี้จะปรากฏขึ้น[Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around May 2021. See for more details. common-bundle.js:535
- ชื่อไฟล์และหมายเลขบรรทัดที่ส่วนท้ายของข้อความ (เช่น
common-bundle.js:535) จะระบุตำแหน่งที่SharedArrayBufferมาจาก หากเป็นไลบรารีของบุคคลที่สาม ให้ติดต่อนักพัฒนาซอฟต์แวร์เพื่อแก้ไขปัญหา หากมีการติดตั้งใช้งานเป็นส่วนหนึ่งของเว็บไซต์ ให้ทำตาม คู่มือด้านล่างเพื่อเปิดใช้การแยกแบบข้ามต้นทาง
(ขั้นสูง) การใช้การรายงานการเลิกใช้งาน
เบราว์เซอร์บางตัวมี ฟังก์ชันการรายงานการเลิกใช้งาน API ไปยังปลายทางที่ระบุ
- ตั้งค่าเซิร์ฟเวอร์รายงานการเลิกใช้งานและรับ URL การรายงาน คุณทำได้โดยใช้บริการสาธารณะหรือสร้างเอง
- ใช้ URL เพื่อตั้งค่าส่วนหัว HTTP ต่อไปนี้ให้กับหน้าที่อาจ
แสดง
SharedArrayBufferReport-To: {"group":"default","max_age":86400,"endpoints":[{"url":"THE_DEPRECATION_ENDPOINT_URL"}]} - เมื่อส่วนหัวเริ่มเผยแพร่ ปลายทางที่คุณลงทะเบียนไว้ควร เริ่มรวบรวมรายงานการเลิกใช้งาน
วิเคราะห์ผลกระทบของการแยกแบบข้ามต้นทาง
คงจะดีไม่น้อยหากคุณสามารถประเมินผลกระทบที่การเปิดใช้การแยกแบบข้ามต้นทางจะมีต่อเว็บไซต์ได้โดยไม่ต้องทำให้สิ่งใดเสียหาย ส่วนหัว HTTP
Cross-Origin-Opener-Policy-Report-Only และ
Cross-Origin-Embedder-Policy-Report-Only
ช่วยให้คุณทำเช่นนั้นได้
- ตั้งค่า
Cross-Origin-Opener-Policy-Report-Only: same-originในเอกสารระดับบนสุด ส่วนหัวนี้จะส่งเฉพาะรายงานเกี่ยวกับผลกระทบที่COOP: same-originจะมี ต่อเว็บไซต์ของคุณเท่านั้น โดยจะไม่ปิดใช้การสื่อสารกับหน้าต่างป๊อปอัป - ตั้งค่าการรายงานและกำหนดค่าเว็บเซิร์ฟเวอร์เพื่อรับและบันทึกรายงาน
- ตั้งค่า
Cross-Origin-Embedder-Policy-Report-Only: require-corpในเอกสารระดับบนสุด ส่วนหัวนี้จะช่วยให้คุณเห็นผลกระทบของการเปิดใช้COEP: require-corpโดยที่ยังไม่ส่งผลต่อการทำงานของเว็บไซต์ คุณสามารถกำหนดค่าส่วนหัวนี้ให้ส่งรายงานไปยังเซิร์ฟเวอร์รายงานเดียวกันกับที่คุณตั้งค่าไว้ในขั้นตอนก่อนหน้า
ลดผลกระทบของการแยกแบบข้ามต้นทาง
หลังจากระบุทรัพยากรที่จะได้รับผลกระทบจากการแยกแบบข้ามต้นทางแล้ว ให้ทำตามหลักเกณฑ์ทั่วไปต่อไปนี้เพื่อเลือกใช้ทรัพยากรแบบข้ามต้นทาง
- ตั้งค่า
Cross-Origin-Resource-Policy:cross-originส่วนหัวในทรัพยากรแบบข้ามต้นทาง เช่น รูปภาพ สคริปต์ สไตล์ชีต iframe และ อื่นๆ ตั้งค่าส่วนหัวCross-Origin-Resource-Policy:same-siteในทรัพยากรในเว็บไซต์เดียวกัน - สำหรับทรัพยากรที่โหลดได้โดยใช้ CORS ให้ตรวจสอบว่าได้เปิดใช้ CORS แล้วโดยการตั้งค่าแอตทริบิวต์
crossoriginในแท็ก HTML ของทรัพยากร (เช่น<img src="example.jpg" crossorigin>) สำหรับคำขอ Fetch ของ JavaScript ให้ตรวจสอบว่าได้ตั้งค่าrequest.modeเป็นcorsแล้ว - หากต้องการใช้ฟีเจอร์ที่มีประสิทธิภาพ เช่น
SharedArrayBufferภายใน iframe ที่ โหลดแล้ว ให้เพิ่มallow="cross-origin-isolated"ลงใน<iframe> - หากทรัพยากรแบบข้ามต้นทางที่โหลดลงใน iframe หรือสคริปต์ Worker มี iframe หรือสคริปต์ Worker อีกชั้น ให้ทำตามขั้นตอนที่อธิบายไว้ในส่วนนี้แบบซ้ำๆ ก่อนที่จะดำเนินการต่อ
- เมื่อยืนยันว่าได้เลือกใช้ทรัพยากรแบบข้ามต้นทางทั้งหมดแล้ว ให้ตั้งค่าส่วนหัว
Cross-Origin-Embedder-Policy: require-corpใน iframe และสคริปต์ Worker (จำเป็นต้องทำไม่ว่าจะเป็นแบบต้นทางเดียวกันหรือแบบข้ามต้นทาง) - ตรวจสอบว่าไม่มีหน้าต่างป๊อปอัปแบบข้ามต้นทางที่ต้องมีการสื่อสารผ่าน
postMessage()เนื่องจากไม่มีวิธีที่จะทำให้หน้าต่างป๊อปอัปเหล่านี้ทำงานต่อไปได้เมื่อเปิดใช้การแยกแบบข้ามต้นทาง คุณสามารถย้ายการสื่อสารไปยังเอกสารอื่นที่ไม่ได้มีการแยกแบบข้ามต้นทาง หรือใช้วิธีการสื่อสารอื่น (เช่น คำขอ HTTP)
เปิดใช้การแยกแบบข้ามต้นทาง
หลังจากลดผลกระทบจากการแยกแบบข้ามต้นทางแล้ว ให้ทำตามหลักเกณฑ์ทั่วไปต่อไปนี้เพื่อเปิดใช้การแยกแบบข้ามต้นทาง
- ตั้งค่าส่วนหัว
Cross-Origin-Opener-Policy: same-originในเอกสารระดับบนสุด หากตั้งค่าCross-Origin-Opener-Policy-Report-Only: same-originไว้ ให้แทนที่ด้วยส่วนหัวนี้ ซึ่งจะบล็อกการสื่อสารระหว่างเอกสารระดับบนสุดกับหน้าต่างป๊อปอัป - ตั้งค่าส่วนหัว
Cross-Origin-Embedder-Policy: require-corpในเอกสารระดับบนสุด หากตั้งค่าCross-Origin-Embedder-Policy-Report-Only: require-corpไว้ ให้แทนที่ด้วยส่วนหัวนี้ ซึ่งจะบล็อกการโหลดทรัพยากรแบบข้ามต้นทางที่ไม่ได้เลือกใช้ - ตรวจสอบว่า
self.crossOriginIsolatedแสดงผลเป็นtrueในคอนโซลเพื่อยืนยันว่าหน้าเว็บของคุณมีการแยกแบบข้ามต้นทาง