ทำให้หน้าเว็บทั้งหน้าเป็นแบบออฟไลน์โดยใช้ HTML5 FileSystem API

ยอมรับกันตามตรงว่า AppCache นั้นน่ารำคาญและมีปัญหา [1, 2, 3] ข้อจํากัดที่สําคัญอย่างหนึ่งคือ ไม่สามารถแคชชิ้นงานแบบไดนามิกตามคําขอ โดยพื้นฐานแล้ว การดำเนินการนี้จะเป็นแบบทั้งทำหรือทั้งไม่ทำเมื่อต้องการนำแอปออฟไลน์ ระบบจะแคชทุกอย่างในไฟล์ Manifest ไว้ล่วงหน้า หรือจะแคชข้อมูลใดๆ ไว้เลยก็ได้

FileSystem API ของ HTML5 จึงกลายเป็นโซลูชันที่น่าสนใจสำหรับข้อบกพร่องของ AppCache ผู้ใช้สามารถจัดเก็บไฟล์และลําดับชั้นโฟลเดอร์ในระบบไฟล์ในเครื่อง (แซนด์บ็อกซ์) โดยใช้โปรแกรม จากนั้นจึงเพิ่ม/อัปเดต/นําทรัพยากรแต่ละรายการออกตามต้องการ เพื่อนร่วมงานของฉัน Boris Smus ยังได้เขียนไลบรารีที่ยอดเยี่ยมเพื่อจัดการการแคชแบบออฟไลน์ประเภทนี้ในบริบทของเกม แนวคิดเดียวกันนี้สามารถขยายผลให้ทำงานร่วมกับเว็บแอปประเภทใดก็ได้

crbug.com/89271 เป็นการแก้ไขที่สำคัญสำหรับ FileSystem API ซึ่งทำให้เส้นทาง filesystem: URL แบบสัมพัทธ์ทำงานได้อย่างราบรื่น

สมมติว่าฉันบันทึก index.html ในโฟลเดอร์รูทของระบบไฟล์ (fs.root) สร้างโฟลเดอร์ img และบันทึก "test.png" ไว้ในโฟลเดอร์นั้น URL filesystem: ของไฟล์ 2 ไฟล์ดังกล่าวจะเป็น filesystem:http://example.com/temporary/index.html และ filesystem:http://example.com/temporary/img/test.png ตามลำดับ จากนั้น หากต้องการใช้ "test.png" สำหรับ img.src ฉันต้องใช้เส้นทางแบบสัมบูรณ์แบบเต็ม: <img src="filesystem:http://example.com/temporary/img/test.png"> ซึ่งหมายความว่าต้องเขียน URL แบบสัมพัทธ์ทั้งหมดใน index.html ใหม่ให้ชี้ไปยัง filesystem: URL ของไฟล์ที่เกี่ยวข้อง ไม่เจ๋งเลย ตอนนี้เมื่อแก้ไขข้อบกพร่องนี้แล้ว ฉันจะเก็บเส้นทางแบบสัมพัทธ์ไปยังไฟล์ (<img src="img/test.png">) ไว้ได้ เนื่องจากระบบจะแก้ไขเส้นทางไปยังต้นทางของระบบไฟล์ได้อย่างถูกต้อง

ฟีเจอร์นี้ช่วยให้คุณดึงหน้าเว็บและบันทึกทรัพยากรทั้งหมดของหน้าเว็บแบบออฟไลน์ได้ง่ายๆ ในขณะเดียวกันก็ยังคงโครงสร้างโฟลเดอร์แบบเดียวกับเวอร์ชันออนไลน์