พื้นที่เก็บข้อมูลถาวร

พื้นที่เก็บข้อมูลถาวรช่วยปกป้องข้อมูลสำคัญจากการถูกปลดออกและลดโอกาสที่ข้อมูลจะสูญหายได้

เมื่อเผชิญกับแรงดันพื้นที่เก็บข้อมูล เช่น พื้นที่ในดิสก์ต่ำ เบราว์เซอร์มักจะนำข้อมูลออก ซึ่งรวมถึงจาก Cache API และ IndexedDB จากต้นทางที่ใช้งานล่าสุด ซึ่งอาจทำให้ข้อมูลสูญหายหากแอปไม่ได้ซิงค์ข้อมูลกับเซิร์ฟเวอร์ และลดความน่าเชื่อถือของแอปโดยการนำทรัพยากรที่จำเป็นต่อการทำงานออก ซึ่งทั้ง 2 อย่างนี้ทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี

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

พื้นที่เก็บข้อมูลถาวรได้รับการรองรับในเบราว์เซอร์สมัยใหม่ต่างๆ

การสนับสนุนเบราว์เซอร์

  • 55
  • 79
  • 57
  • 15.2

แหล่งที่มา

ดูข้อมูลเพิ่มเติมเกี่ยวกับการปลด จำนวนพื้นที่เก็บข้อมูลที่เก็บ และวิธีจัดการขีดจำกัดโควต้าได้ที่พื้นที่เก็บข้อมูลสำหรับเว็บ

ตรวจสอบว่าพื้นที่เก็บข้อมูลของเว็บไซต์มีสถานะเป็นถาวรหรือไม่

คุณสามารถใช้ 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 ปรากฏขึ้นถามผู้ใช้ว่าจะอนุญาตให้เว็บไซต์เก็บข้อมูลไว้ในพื้นที่เก็บข้อมูลถาวรหรือไม่

ป๊อปอัปที่ Firefox แสดงเมื่อเว็บไซต์ขอพื้นที่เก็บข้อมูลถาวร
ป๊อปอัปที่ Firefox แสดงเมื่อเว็บไซต์ขอพื้นที่เก็บข้อมูลถาวร

พื้นที่เก็บข้อมูลใดบ้างที่ได้รับการปกป้องโดยพื้นที่เก็บข้อมูลถาวร

หากให้สิทธิ์พื้นที่เก็บข้อมูลถาวร เบราว์เซอร์จะไม่นำข้อมูลที่เก็บไว้ในผลิตภัณฑ์ต่อไปนี้ออก

  • API แคช
  • คุกกี้
  • พื้นที่เก็บข้อมูล DOM (พื้นที่เก็บข้อมูลในเครื่อง)
  • File System API (ระบบไฟล์ที่มีเบราว์เซอร์และแซนด์บ็อกซ์)
  • IndexedDB
  • Service Worker
  • แคชของแอป (เลิกใช้งานแล้ว ไม่ควรใช้)
  • WebSQL (เลิกใช้งานแล้ว ไม่ควรใช้)

วิธีปิดพื้นที่เก็บข้อมูลถาวร

ตอนนี้ยังไม่มีวิธีแบบเป็นโปรแกรมที่จะบอกเบราว์เซอร์ว่าคุณไม่จำเป็นต้องใช้พื้นที่เก็บข้อมูลถาวรอีกต่อไป

บทสรุป

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

ขอขอบคุณ

ขอขอบคุณเป็นพิเศษสำหรับ Victor Costan และ Joe Medley ที่อ่านบทความนี้ ขอขอบคุณ Chris Wilson ที่เขียนบทความนี้ต้นฉบับที่ ปรากฏบน WebFundamentals เป็นครั้งแรก

รูปภาพหลักของ Umberto ใน Unsplash