พื้นที่เก็บข้อมูลถาวรช่วยปกป้องข้อมูลสำคัญจากการถูกนำออก และลดโอกาสที่ข้อมูลจะสูญหาย
เมื่อเผชิญกับปัญหาพื้นที่เก็บข้อมูลไม่เพียงพอ เช่น พื้นที่ดิสก์เหลือน้อย เบราว์เซอร์จะ โดยทั่วไปนำข้อมูลออก ซึ่งรวมถึงข้อมูลจาก Cache API และ IndexedDB จากต้นทางที่ใช้งานล่าสุดน้อยที่สุด ซึ่งอาจทำให้ข้อมูลสูญหายหากแอปไม่ได้ซิงค์ข้อมูลกับเซิร์ฟเวอร์ และลดความน่าเชื่อถือของแอปด้วยการนำทรัพยากรที่แอปต้องใช้ในการทำงานออก ซึ่งทั้ง 2 อย่างนี้จะส่งผลให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดี
โชคดีที่การวิจัยของทีม Chrome แสดงให้เห็นว่า Chrome ล้างข้อมูลโดยอัตโนมัติไม่บ่อยนัก แต่ผู้ใช้ล้างพื้นที่เก็บข้อมูลด้วยตนเองบ่อยกว่ามาก ดังนั้น หากผู้ใช้เข้าชมเว็บไซต์ของคุณเป็นประจำ โอกาสที่ข้อมูลของคุณจะถูกนำออกจึงมีน้อย หากต้องการป้องกันไม่ให้เบราว์เซอร์ลบข้อมูล คุณสามารถขอให้ทำเครื่องหมายพื้นที่เก็บข้อมูลของทั้งเว็บไซต์เป็นแบบถาวร
พื้นที่เก็บข้อมูลถาวรได้รับการรองรับในเบราว์เซอร์สมัยใหม่หลายเบราว์เซอร์
ดูข้อมูลเพิ่มเติมเกี่ยวกับการนำออก ปริมาณพื้นที่เก็บข้อมูลที่คุณใช้ได้ และวิธีจัดการข้อจำกัดของโควต้า ได้ที่ พื้นที่เก็บข้อมูลสำหรับเว็บ
ตรวจสอบว่าพื้นที่เก็บข้อมูลของเว็บไซต์ถูกทำเครื่องหมายเป็นแบบถาวรหรือไม่
คุณสามารถใช้ JavaScript เพื่อตรวจสอบว่าพื้นที่เก็บข้อมูลของเว็บไซต์ถูกทำเครื่องหมายเป็นแบบถาวรหรือไม่ การเรียก navigator.storage.persisted() จะแสดงผล Promise ที่แสดงผลเป็นบูลีน ซึ่งระบุว่าพื้นที่เก็บข้อมูลถูกทำเครื่องหมายเป็นแบบถาวรหรือไม่
// Check if site's storage has been marked as persistent
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persisted();
console.log(`Persisted storage granted: ${isPersisted}`);
}
ฉันควรขอพื้นที่เก็บข้อมูลถาวรเมื่อใด
เวลาที่ดีที่สุดในการขอให้ทำเครื่องหมายพื้นที่เก็บข้อมูลเป็นแบบถาวรคือเมื่อคุณบันทึกข้อมูลผู้ใช้ที่สำคัญ และควรใส่คำขอไว้ในท่าทางของผู้ใช้ อย่าขอพื้นที่เก็บข้อมูลถาวรเมื่อโหลดหน้าเว็บหรือในโค้ด Bootstrap อื่นๆ เนื่องจากเบราว์เซอร์อาจแสดงข้อความแจ้งขอสิทธิ์จากผู้ใช้ หากผู้ใช้ไม่ได้ทำสิ่งใดที่คิดว่าต้องบันทึก ข้อความแจ้งอาจทำให้สับสนและผู้ใช้มีแนวโน้มที่จะปฏิเสธคำขอ นอกจากนี้ อย่าแสดงข้อความแจ้งบ่อยเกินไป หากผู้ใช้ตัดสินใจไม่ให้สิทธิ์ ก็อย่าแสดงข้อความแจ้งอีกครั้งทันทีเมื่อบันทึกครั้งถัดไป
ขอพื้นที่เก็บข้อมูลถาวร
หากต้องการขอพื้นที่เก็บข้อมูลถาวรสำหรับข้อมูลของเว็บไซต์ ให้เรียก navigator.storage.persist() ซึ่งจะแสดงผล Promise ที่แสดงผลเป็นบูลีน ซึ่งระบุว่าได้รับสิทธิ์พื้นที่เก็บข้อมูลถาวรหรือไม่
// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persist();
console.log(`Persisted storage granted: ${isPersisted}`);
}
ระบบให้สิทธิ์อย่างไร
ระบบจะถือว่าพื้นที่เก็บข้อมูลถาวรเป็นสิทธิ์ เบราว์เซอร์ใช้ปัจจัยต่างๆ ในการตัดสินใจว่าจะให้สิทธิ์พื้นที่เก็บข้อมูลถาวรหรือไม่
Chrome และเบราว์เซอร์อื่นๆ ที่ใช้ Chromium
Chrome และเบราว์เซอร์อื่นๆ ที่ใช้ Chromium ส่วนใหญ่จะจัดการคำขอสิทธิ์โดยอัตโนมัติและไม่แสดงข้อความแจ้งใดๆ ให้ผู้ใช้เห็น แต่หากระบบพิจารณาว่าเว็บไซต์มีความสำคัญ ระบบจะให้สิทธิ์พื้นที่เก็บข้อมูลถาวรโดยอัตโนมัติ ไม่เช่นนั้นระบบจะปฏิเสธคำขอโดยไม่แจ้งให้ทราบ
ฮิวริสติกที่ใช้พิจารณาว่าเว็บไซต์มีความสำคัญหรือไม่ ได้แก่
- ระดับการมีส่วนร่วมกับเว็บไซต์สูงเพียงใด
- มีการติดตั้งหรือเพิ่มเว็บไซต์ลงในบุ๊กมาร์กหรือไม่
- เว็บไซต์ได้รับสิทธิ์ให้แสดงการแจ้งเตือนหรือไม่
หากคำขอถูกปฏิเสธ คุณสามารถส่งคำขออีกครั้งในภายหลังและระบบจะประเมินโดยใช้ฮิวริสติกเดียวกัน
Firefox
Firefox มอบหมายคำขอสิทธิ์ให้ผู้ใช้ เมื่อมีการขอพื้นที่เก็บข้อมูลถาวร ระบบจะแสดงป๊อปอัป UI เพื่อถามผู้ใช้ว่าจะอนุญาตให้เว็บไซต์จัดเก็บข้อมูลในพื้นที่เก็บข้อมูลถาวรหรือไม่
พื้นที่เก็บข้อมูลใดบ้างที่พื้นที่เก็บข้อมูลถาวรปกป้อง
หากได้รับสิทธิ์พื้นที่เก็บข้อมูลถาวร เบราว์เซอร์จะไม่นำข้อมูลที่จัดเก็บไว้ในพื้นที่ต่อไปนี้ออก
- Cache API
- คุกกี้
- พื้นที่เก็บข้อมูล DOM (พื้นที่เก็บข้อมูลในเครื่อง)
- File System API (ระบบไฟล์ที่เบราว์เซอร์ให้มาและระบบไฟล์แบบแซนด์บ็อกซ์)
- IndexedDB
- Service Worker
- แคชของแอปพลิเคชัน (เลิกใช้งานแล้ว ห้ามใช้)
- WebSQL (เลิกใช้งานแล้ว ห้ามใช้)
วิธีปิดพื้นที่เก็บข้อมูลถาวร
ในขณะนี้ยังไม่มีวิธีทางโปรแกรมในการบอกเบราว์เซอร์ว่าคุณไม่ต้องการพื้นที่เก็บข้อมูลถาวรอีกต่อไป
บทสรุป
การวิจัยของทีม Chrome แสดงให้เห็นว่า Chrome ล้างข้อมูลที่จัดเก็บไว้โดยอัตโนมัติไม่บ่อยนัก แม้ว่าจะเป็นไปได้ก็ตาม พื้นที่เก็บข้อมูลถาวรอาจเป็นเครื่องมือที่มีประโยชน์ในการปกป้องข้อมูลสำคัญที่อาจไม่ได้จัดเก็บไว้ในระบบคลาวด์หรือจะทำให้ข้อมูลสูญหายอย่างมาก เพื่อให้มั่นใจว่าเบราว์เซอร์จะไม่นำข้อมูลออกเมื่ออุปกรณ์ในเครื่องมีพื้นที่เก็บข้อมูลไม่เพียงพอ และโปรดจำไว้ว่าให้ขอพื้นที่เก็บข้อมูลถาวรเฉพาะเมื่อผู้ใช้มีแนวโน้มที่จะต้องการพื้นที่เก็บข้อมูลดังกล่าวมากที่สุด
ขอขอบคุณ
ขอขอบคุณเป็นพิเศษต่อ Victor Costan และ Joe Medley ที่ช่วยตรวจสอบเอกสารนี้ และขอขอบคุณ Chris Wilson ที่เขียนเอกสารเวอร์ชันเดิมซึ่งปรากฏครั้งแรกใน WebFundamentals