จากภาคแรก สิ่งที่ยังไม่ได้เขียนถึงคือ event และ status ของ Application Cache สองอย่างนี้ใช้คู่กันเมื่อ manifest file มีการเปลี่ยนแปลงโดย browser จะยิง event มาหลังจากเทียบ manifest file และโหลดไฟล์ที่กำหนดให้เก็บไว้ event ต่างๆ ก็มี
- checking: event แรกที่จะถูกยิงออกมา เป็นช่วงที่ browser ดาวโหลด manifest มาเทียบว่าต้องดึงไฟล์มาใหม่หรือไม่ ตรวจสอบเสร็จก็จะมี 4 event ที่ยิงถัดมาคือ noupdate, downloading, obsolete, error
- noupdate: หลังจากตรวจสอบแล้ว manifest ไม่มีการเปลี่ยนแปลง Application Cache ก็ยิง event นี้ออกมา
- downloading: หลังจากตรวจสอบแล้วว่า manifest มีการเปลี่ยนแปลง browser ก็จะดาวโหลดไฟล์ใหม่และ Application Cache จะยิง event นี้ออกมา ขณะดาวโหลดจะยิง event progress และเมื่อดาวโหลดเสร็จจะยิง cached และ updatedready ออกมา หรือถ้ามีปัญหาอะไรเกิดขึ้นก็จะยิง error
- progress: ใช้สำหรับดูว่าดาวโหลดไฟล์ที่กำหนดไว้ใน manifest ถึงไหนแล้ว event ที่ยิงถัดจากนี้จะเหมือน downloading
- cached: เมื่อไฟล์ต่างๆ ที่กำหนดไว้ใน manifest ถูกดาวโหลดมาเก็บไว้หมดแล้วเป็นครั้งแรก
- updateready: เมื่อไฟล์ต่างๆ ที่กำหนดไว้ใน manifest ถูกดาวโหลดมาเก็บไว้ใหม่แล้ว พร้อมที่จะสั่ง swapcache() เพื่อใช้ไฟล์ใหม่
- obsolete: เมื่อไฟล์ manifest ที่ browser พยายามจะดึงมาตรวจสอบถูกตอบกลับมาว่า 404 (Not Found)/410 (Gone) ไฟล์ทั้งหมดที่เคยเก็บไว้จะถูกลบ
- error: เมื่อไม่สามารถดึงไฟล์ใน manifest หรือดึง manifest มาไม่สำเร็จ
นอกจาก event ต่างๆ แล้วยังมี status บอกด้วยว่าไฟล์ที่ใช้อยู่ปัจจุบันใหม่หรือเก่าอย่างไร หรือไม่เคยถูกเก็บไว้เลย status ต่างๆ ก็มี
- UNCACHED: ไว้บอกว่าเว็บที่ใช้อยู่ไม่ถูกดาวโหลดมาเก็บไว้เลย
- IDLE: ไฟล์ที่เห็นอยู่ปัจจุบันถูกดาวโหลดมาเก็บไว้และใหม่สุดแล้ว
- CHECKING: กำลังตรวจสอบ manifest file อยู่ว่าต้องดาวโหลดไฟล์ใหม่หรือไม่
- DOWNLOADING: กำลังดาวโหลดไฟล์ต่างๆ ที่กำหนดไว้ใน manifest file
- UPDATEREADY: ดาวโหลดไฟล์ใหม่มาครบแล้ว
- OBSOLETE: ไฟล์ทั้งหมดที่ดาวโหลดมา จะไม่ถูกเก็บไว้อีก
event และ status พวกนี้ใช้คู่กับฟังก์ชั่นต่างๆ ของ Application Cache มีด้วยกันสามฟังก์ชั่น
- update() เพื่อสั่งให้ browser ดาวโหลดไฟล์ที่กำหนดใน manifest ใหม่
- abort() ยกเลิกการดาวโหลดไฟล์ที่กำหนดไว้ใน manifest
- swapCache() refresh หน้าใหม่เพื่อใช้ไฟล์ใหม่ที่ดาวโหลดมา
เรื่อง Application Cache ก็คงครบแล้ว ตอนแรกว่าจะจดเรื่อง Web Storage แต่นึกได้ว่ายังไม่ได้เขียนถึง event/status ของเรื่องนี้เลย จดไว้ซักหน่อยก่อนดีกว่า แต่คราวหน้าคงจดเรื่อง Web Storage หละ
อ้างอิง: