MousePlayer ทำงานอย่างไร
คู่มือเข้าใจง่ายเกี่ยวกับสถาปัตยกรรมติดตาม การจัดการความละเอียดหน้าจอข้ามอุปกรณ์ และขอบเขตระบบ
1. ทำไมเราไม่บันทึกวิดีโอ
มักเข้าใจผิดว่าเครื่องมือวิเคราะห์ภาพบันทึกหน้าจอเป็นวิดีโอมาตรฐาน เช่น MP4 หรือ WebM วิธีนั้นใช้แบนด์วิดท์มหาศาล ทำให้เว็บไซต์ช้าลงมาก และข้อความเบลออ่านยาก
MousePlayer ใช้เทคโนโลยีเบาที่เรียกว่า เทเลเมทรีภาพสแนปช็อต DOM แทน หลักการทำงานมีดังนี้:
ภาพสแนปช็อตพิมพ์เขียว
เมื่อผู้เข้าชมเปิดหน้า สคริปต์สร้าง “พิมพ์เขียว” แบบข้อความของ HTML และโครงสร้างรูปแบบ บันทึกตำแหน่งองค์ประกอบโดยไม่คัดลอกไฟล์ภาพหรือวิดีโอ โปรแกรมเล่นโหลดภาพจากที่อยู่เดิมตอนเล่นย้อนหลัง ยกเว้นองค์ประกอบ canvas ที่ส่งเนื้อหาเป็นภาพ (ดูด้านล่าง)
เทเลเมทรีพิกัด
ขณะผู้ใช้โต้ตอบ เราบันทึกสตรีมเหตุการณ์ ได้แก่ ตำแหน่งเมาส์ ความลึกการเลื่อน เป้าหมายคลิก การปรับขนาดเบราว์เซอร์ และการเปลี่ยนหน้า รวมถึงข้อความคอนโซล คำขอล้มเหลวหรือช้า และเวลาการโหลด (Web Vitals) ตามการตั้งค่า การเคลื่อนไหวและคลิกมีขนาดเล็ก แต่ภาพสแนปช็อตและการเปลี่ยนหน้าอาจใหญ่กว่ามากตามหน้า โดยส่งแบบบีบอัด
เล่นย้อนหลังแบบโรงภาพยนตร์
เมื่อดูเซสชันในแดชบอร์ด โปรแกรมเล่นสร้างหน้าขึ้นใหม่จากพิมพ์เขียวที่บันทึก และเลื่อนตัวชี้เสมือนบนหน้าแบบเรียลไทม์ ข้อความจึงคมชัด
ออกแบบให้เบา: สคริปต์โหลดแบบอะซิงโครนัสและส่งจุดข้อมูลตัวเลขขนาดเล็กแทนวิดีโอ จึงใช้ทรัพยากรน้อย ผลต่อ Core Web Vitals ขึ้นกับหน้า โฮสติ้ง และเครือข่ายผู้เข้าชม ควรวัดบนเว็บไซต์เองแทนยึดตัวเลขจากเรา ไม่รับประกันความเร็วโหลดเฉพาะ – ดูข้อ 20 ใน ข้อกำหนดการให้บริการ
2. ความละเอียดหน้าจอ & อุปกรณ์มือถือ
ผู้ใช้ปัจจุบันใช้ตั้งแต่สมาร์ตโฟนเล็กจนถึงจอเดสก์ท็อป 4K แบบกว้างพิเศษ เว็บไซต์ย้าย พับ และจัดเลย์เอาต์ใหม่อัตโนมัติให้พอดีความกว้างต่างกัน เรียกว่า Responsive Web Design
ทำให้ตรงพื้นที่แสดงผลจริงของผู้เข้าชมอย่างไร
เพื่อไม่ให้ภาพเล่นย้อนหลังบิดเบี้ยว MousePlayer บันทึกขนาดพื้นที่แสดงผลที่แน่นอน (เช่น 390x844 สำหรับสมาร์ตโฟน หรือ 1920x1080 สำหรับจอเดสก์ท็อป) เมื่อเปิดโปรแกรมเล่นโรงภาพยนตร์ ระบบสร้างแซนด์บ็อกซ์ปรับสเกลให้ตรงอัตราส่วนหน้าจอเดิมอย่างแม่นยำ
หน้าจอเดสก์ท็อป & แล็ปท็อป
บนคอมพิวเตอร์ทั่วไป เราเก็บการเคลื่อนไหวเมาส์ต่อเนื่องและการนำทางหลายแท็บในเซสชันเบราว์เซอร์เดียว เมนูที่เปิดเมื่อชี้เมาส์จะปรากฏในการเล่นย้อนหลังเมื่อมีการเปลี่ยนเอกสารของหน้า แต่เอฟเฟกต์ hover ที่ใช้ CSS ล้วนไม่ปรากฏในเอกสาร จึงไม่สร้างซ้ำ
สมาร์ตโฟน & แท็บเล็ต
หน้าจอสัมผัสไม่มีเมาส์ลอย MousePlayer ปรับอัตโนมัติเพื่อบันทึกการแตะ การปัดเลื่อน และการเปลี่ยนแนวหน้าจอ (ตั้งกับนอน)
ความท้าทายเมื่อเปลี่ยนขนาดกลางเซสชัน
หากผู้เข้าชมหมุนแท็บเล็ตหรือปรับหน้าต่างระหว่างเซสชัน เลย์เอาต์จะเปลี่ยนแบบไดนามิก MousePlayer เก็บเหตุการณ์เปลี่ยนขนาดแล้วปรับพื้นที่เล่นทันทีอย่างต่อเนื่อง จึงรักษาบริบทการโต้ตอบ
3. ขีดจำกัดระบบ & ขอบเขตเทคนิค
เพื่อเคารพความเป็นส่วนตัว รักษาความปลอดภัยเบราว์เซอร์ และประมวลผลรวดเร็ว MousePlayer ทำงานภายในขอบเขตทางเทคนิคดังนี้:
| ขอบเขตระบบ | วิธีที่ MousePlayer จัดการ |
|---|---|
| iFrames | iframe ที่มี origin เดียวกับหน้าจะบันทึกทั้งเนื้อหาและการโต้ตอบ เนื้อหาฝังจาก origin อื่น เช่น YouTube หรือแบบฟอร์มชำระเงิน Stripe บันทึกภายในไม่ได้เพราะนโยบายความปลอดภัยเบราว์เซอร์ (Same-Origin Policy) จะแสดงเป็นพื้นที่แทนและไม่โหลดในการเล่นย้อนหลัง |
| ช่องข้อมูลอ่อนไหว (PII) | ปกปิดช่องรหัสผ่านและชำระเงินบนอุปกรณ์ผู้เข้าชมทุกระดับ และค่าเริ่มต้นทุกทรัพยากรคือปกปิดข้อมูลแบบฟอร์มทั้งหมด เห็นว่าพิมพ์แต่ไม่เห็นข้อความ มีข้อจำกัดสองข้อ: ระดับที่อ่อนกว่าสองระดับต้องได้รับอนุมัติเป็นลายลักษณ์อักษร และการปกปิดไม่ครอบคลุมสิ่งที่หน้าเว็บแสดงในเอกสาร – หน้ายืนยันที่แสดงที่อยู่จึงเป็นส่วนหนึ่งของภาพสแนปช็อต อธิบายทั้งสองข้อใน DPA |
| องค์ประกอบ Canvas & WebGL | เนื้อหา canvas บันทึกเป็นภาพครั้งแรกพร้อมสแนปช็อต แล้วทุกครั้งที่เปลี่ยน โดยสูงสุดประมาณหนึ่งครั้งต่อวินาทีและจำกัดขนาด ภาพเคลื่อนไหวลื่นไหลจึงเป็นลำดับเฟรม ไม่ส่งภาพในพื้นที่ปกปิดหรือ canvas ที่มีภาพ origin อื่น ส่วน WebGL อาจว่าง |
| Web Components (Shadow DOM) | บันทึก shadow root แบบเปิดพร้อมเนื้อหา สคริปต์เข้าถึงแบบปิดไม่ได้ เนื้อหาจึงไม่ปรากฏในการเล่นย้อนหลัง |
| การส่งข้อมูล & พื้นที่เก็บเบราว์เซอร์ | ส่งข้อมูลผ่าน WebSocket เข้ารหัส (HTTPS/WSS) หากเชื่อมไม่ได้ เช่น เพราะพร็อกซี สคริปต์เปลี่ยนไปเส้นทาง HTTP เข้ารหัส ภาพสแนปช็อตใหญ่มากอัปโหลดแยกผ่าน HTTPS MousePlayer ไม่ตั้งคุกกี้ ใช้ local storage และ session storage บนเว็บไซต์ของคุณ |
| ช่วงว่าง AFK | หากผู้เข้าชมเปิดแท็บทิ้งไว้แล้วเดินออกไป 20 นาที ระบบตรวจช่วงไม่ใช้งานอัตโนมัติและย่นช่วงว่างในการเล่นย้อนหลัง จึงไม่เสียเวลาดูภาพนิ่ง |