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

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

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

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

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

การรองรับเบราว์เซอร์

  • 55
  • 79
  • 57
  • 15.2

แหล่งที่มา

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

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

คุณใช้ JavaScript เพื่อระบุว่ามีการทำเครื่องหมายพื้นที่เก็บข้อมูลของเว็บไซต์เป็นแบบถาวรได้หรือไม่ การเรียกใช้ navigator.storage.persisted() จะแสดงผล Promise ที่แก้ได้ด้วยบูลีน ซึ่งหมายความว่าพื้นที่เก็บข้อมูลมีการทำเครื่องหมายเป็น Permise หรือไม่

// 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() โดยจะแสดงผลค่า "สัญญา" ที่แก้ไขด้วยบูลีนเพื่อระบุว่าได้รับสิทธิ์เข้าถึงพื้นที่เก็บข้อมูลถาวรแล้วหรือไม่

// 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