HTML5 Application Cache #2

จากภาคแรก สิ่งที่ยังไม่ได้เขียนถึงคือ event และ status ของ Application Cache สองอย่างนี้ใช้คู่กันเมื่อ manifest file มีการเปลี่ยนแปลงโดย browser จะยิง event มาหลังจากเทียบ manifest file และโหลดไฟล์ที่กำหนดให้เก็บไว้ event ต่างๆ ก็มี

  1. checking: event แรกที่จะถูกยิงออกมา เป็นช่วงที่ browser ดาวโหลด manifest มาเทียบว่าต้องดึงไฟล์มาใหม่หรือไม่ ตรวจสอบเสร็จก็จะมี 4 event ที่ยิงถัดมาคือ noupdate, downloading, obsolete, error
  2. noupdate: หลังจากตรวจสอบแล้ว manifest ไม่มีการเปลี่ยนแปลง Application Cache ก็ยิง event นี้ออกมา
  3. downloading: หลังจากตรวจสอบแล้วว่า manifest มีการเปลี่ยนแปลง browser ก็จะดาวโหลดไฟล์ใหม่และ Application Cache จะยิง event นี้ออกมา ขณะดาวโหลดจะยิง event progress และเมื่อดาวโหลดเสร็จจะยิง cached และ updatedready ออกมา หรือถ้ามีปัญหาอะไรเกิดขึ้นก็จะยิง error
  4. progress: ใช้สำหรับดูว่าดาวโหลดไฟล์ที่กำหนดไว้ใน manifest ถึงไหนแล้ว event ที่ยิงถัดจากนี้จะเหมือน downloading
  5. cached: เมื่อไฟล์ต่างๆ ที่กำหนดไว้ใน manifest ถูกดาวโหลดมาเก็บไว้หมดแล้วเป็นครั้งแรก
  6. updateready: เมื่อไฟล์ต่างๆ ที่กำหนดไว้ใน manifest ถูกดาวโหลดมาเก็บไว้ใหม่แล้ว พร้อมที่จะสั่ง swapcache() เพื่อใช้ไฟล์ใหม่
  7. obsolete: เมื่อไฟล์ manifest ที่ browser พยายามจะดึงมาตรวจสอบถูกตอบกลับมาว่า 404 (Not Found)/410 (Gone) ไฟล์ทั้งหมดที่เคยเก็บไว้จะถูกลบ
  8. error: เมื่อไม่สามารถดึงไฟล์ใน manifest หรือดึง manifest มาไม่สำเร็จ

นอกจาก event ต่างๆ แล้วยังมี status บอกด้วยว่าไฟล์ที่ใช้อยู่ปัจจุบันใหม่หรือเก่าอย่างไร หรือไม่เคยถูกเก็บไว้เลย status ต่างๆ ก็มี

  1. UNCACHED: ไว้บอกว่าเว็บที่ใช้อยู่ไม่ถูกดาวโหลดมาเก็บไว้เลย
  2. IDLE: ไฟล์ที่เห็นอยู่ปัจจุบันถูกดาวโหลดมาเก็บไว้และใหม่สุดแล้ว
  3. CHECKING: กำลังตรวจสอบ manifest file อยู่ว่าต้องดาวโหลดไฟล์ใหม่หรือไม่
  4. DOWNLOADING: กำลังดาวโหลดไฟล์ต่างๆ ที่กำหนดไว้ใน manifest file
  5. UPDATEREADY: ดาวโหลดไฟล์ใหม่มาครบแล้ว
  6. OBSOLETE: ไฟล์ทั้งหมดที่ดาวโหลดมา จะไม่ถูกเก็บไว้อีก

event และ status พวกนี้ใช้คู่กับฟังก์ชั่นต่างๆ ของ Application Cache มีด้วยกันสามฟังก์ชั่น

  1. update() เพื่อสั่งให้ browser ดาวโหลดไฟล์ที่กำหนดใน manifest ใหม่
  2. abort() ยกเลิกการดาวโหลดไฟล์ที่กำหนดไว้ใน manifest
  3. swapCache() refresh หน้าใหม่เพื่อใช้ไฟล์ใหม่ที่ดาวโหลดมา

เรื่อง Application Cache ก็คงครบแล้ว ตอนแรกว่าจะจดเรื่อง Web Storage แต่นึกได้ว่ายังไม่ได้เขียนถึง event/status ของเรื่องนี้เลย จดไว้ซักหน่อยก่อนดีกว่า แต่คราวหน้าคงจดเรื่อง Web Storage หละ

อ้างอิง:

  1. A Beginner’s Guide to Using the Application Cache
  2. HTML5: Offline web application

About llun

Just a programmer

, , , ,