Google Gears หรือ Gears เป็นเทคโนโลยีใหม่ ที่ช่วยให้การเปิดเว็บสามารถทำไปได้อย่างรวดเร็วมากขึ้นโดยอาศัยหลักการง่าย ๆ ที่ว่า ไฟล์ต่าง ๆ ที่อยู่บนเครื่องของเรา ย่อมโหลดมาได้เร็วกว่าไฟล์ที่อยู่บนเว็บเซิร์ฟเวอร์
องค์ประกอบของ Gears
Gears ประกอบด้วยส่วนประกอบต่าง ๆ ดังนี้
- Database Module (ใช้ SQLite) เพื่อใช้เก็บข้อมูลต่าง ๆ ของเว็บไว้ในเครื่องของเรา
- WorkerPool Module ใช้สำหรับการรัน JavaScript ใน Background
- LocalServer Module ใช้สำหรับการเรียกใช้ไฟล์ต่าง ๆ ไม่ว่าจะเป็นภาพ หรือข้อมูลอื่น ๆ โดยไม่จำเป็นต้องมีการต่ออินเตอร์เน็ต (Offline Data) โดย LocalServer จะทำการ Cache ข้อมูลเหล่านี้ไว้บนเครื่อง และให้บริการเมื่อมีการร้องขอ
- Desktop Module ใช้เพื่อให้เว็บที่ใช้ Gears สามารถใช้งานคำสั่งที่เกี่ยวกับ Desktop ได้ เช่น การสร้าง Shortcut
- Geolocation Module ใช้สำหรับบอกตำแหน่งที่อยู่ของผู้ใช้งานเว็บที่ใช้ Gears ณ ขณะนั้น
การทำงานของ Gears
ตามที่ผมเคยอ้างไว้ในบทความ Ajax? คืออะไรกันหว่า? [http://blog.chonla.com/?p=8] ว่า เว็บ 1 หน้า จะแยกเป็น 3 ส่วน คือ Layout (Application UI), Data, และ Script ส่วนที่เป็น Data ที่แยกออกมานี้ เราเรียกว่า Data Layer
โดยปกติเว็บทั่ว ๆ ไป จะไม่มีการแยก Data Layer ออกมาจากส่วน Layout แต่จะเขียนปนกัน
การที่จะเก็บ Data ไว้ในเครื่องเราได้นั้น เราจำเป็นต้องแยก Data Layer ออกจาก Layout ก่อน เราเรียกขั้นตอนนี้ว่า Data Isolation เมื่อเรามองถึงเว็บที่มีการเรียกใช้ Ajax ในการแลกเปลี่ยนเฉพาะ Data ระหว่างเว็บบราวเซอร์ และเว็บเซิร์ฟเวอร์ เราสามารถพิจารณาได้ว่า Ajax นี่เองที่ทำหน้าที่เป็น Data Layer ของเว็บนั้น ๆ
และตรงนี้เองที่ Gears จะเข้ามามีบทบาท ลองพิจารณาดูนะครับว่า ถ้าเราเอา Module อะไรซักอย่าง ไปคั่นระหว่างส่วนเว็บบราวเซอร์กับส่วน Data Layer เพื่อใช้ในตัดสินใจว่าจะดึงข้อมูลที่เราเก็บไว้จากในเครื่องของเรา หรือจะดึงข้อมูลใหม่จากเว็บเซิร์ฟเวอร์แทน หรือจะทำทั้ง 2 อย่างดี เราเรียก Module ตัวนี้ว่า Data Switch เราสามารถมองได้ว่า Data Switch นี่ก็ทำตัวเหมือนเป็น Data Layer เหมือนกันนั่นเอง
Data Switch จะทำหน้าที่ทั้งบันทึกข้่อมูลที่ต้องการลงสู่เครื่องของเรา และดึงข้อมูลที่เราต้องการออกมา เมื่อเราเชื่อมภาพการทำงานของ Data Switch เข้าไปด้วย เราจะเห็นได้ว่า นี่แหละครับ คอนเซ์ปต์การทำงานของ Gears
ตัว Data Switch เองยังสามารถที่จะกำหนดให้ทำการ Synchronize ข้อมูลกับ Server เป็นระยะได้อีกด้วย
Gears เมื่อไม่มี Data Layer
จะทำยังไง ถ้าเราไม่ได้ทำ Data Layer? ยังทำได้ครับ แต่ก็ยุ่งยากขึ้นมาหน่อย เราจะต้องเขียน Code ในการดักขั้นตอนของการรับส่งข้อมูลไปยัง Server เช่น ตอน Submit Form แต่การทำแบบนี้ ทำให้เราต้องทำงานหนักขึ้นอีกเยอะ สู้เอาเวลามาแยก Data Layer ออกมาน่าจะง่ายกว่าหรือเปล่า?
เมื่อไหร่ที่จะควรหรือไม่ควรทำ Offline Data
- เมื่อข้อมูลเป็นข้อมูลชั่วคราว เช่น ข้อมูลดัชนีหุ้น แบบนี้ก็ไม่ควรทำ
- ข้อมูลบางอย่างจะมันก็ควรจะเป็น online มากกว่าที่จะเป็น offline เช่น ข้อความพูดคุยในโปรแกรม Chat แบบนี้ก็ไม่ควรทำเหมือนกัน
- ข้อมูลที่มีการเรียกใช้บ่อย ๆ แบบนี้ควรทำอย่างยิ่ง
- ข้อมูลที่ต้องมีการประมวลผล หรือใช้ข้อมูลมากมายมหาศาลเกินกว่าเครื่องผู้ใช้จะรับไหวได้ แบบนี้ก็ไม่ควรทำ
การ Synchronize Data
จะเกิดขึ้น เพราะสาเหตุดังนี้
- มีการเปลี่ยนแปลงข้อมูลในขณะที่ Offline
- มีการใช้งานข้อมูลร่วมกันกับคนอื่น (คนอื่นอาจจะเปลี่ยนแปลงข้อมูลนั้นได้)
- มีการเรียกใช้งานข้อมูลจาก External Resource เช่นการเรียกใช้งาน Feed
การทำให้ข้อมูลบนเครื่อง เหมือนกับข้อมูลบนเว็บเซิร์ฟเวอร์ เราเรียกว่าการทำ Synchronization เราสามารถทำได้ 2 วิธีคือ Manual Sync และ Background Sync
Manual Sync
จะทำก็ต่อเมื่อ มีข้อมูลที่ต้อง Sync ไม่มากก และผู้ใช้้ต้องการข้อมูลที่ใหม่ล่าสุดก่อนที่จะทำการเปลี่ยนไปใช้ข้อมูลแบบ Offline แต่ปัญหาของการทำ Manual Sync ก็มี เช่น เราไม่สามารถรู้ได้ว่า Network ในขณะนั้นหลุดเมื่อไหร่ เพราะผู้ใช้อาจจะอยู่ในสถานที่ที่ Network ไม่เสถียร เช่นบนรถ เป็นต้น หรือ User อาจจะลืม Sync ก่อนที่จะเข้าสู่ Offline ก็ได้
Background Sync
วิธีนี้จะมีข้อดีคือ ข้อมูลจะอัพเดทเสมอ และสามารถทำได้แม้เน็ตจะไม่เร็ว ข้อเสียคือ ถ้าไม่ได้ใช้ WorkerPool (ถ้าจำไม่ได้ว่าคืออะไร ให้ย้อนกลับไปอ่านข้างต้น) มันจะกิน resource ปริมาณมาก อาจจะทำให้เน็ตช้าได้
ตัวอย่างเว็บที่ใช้ Gears
Google (Docs, Reader, Picasa, YouTube), MySpace, WordPress 2.6
ตัวอย่าง Gears Application
บทสรุป
ตามความเห็นส่วนตัวแล้ว Gears ถือว่าเป็นเทคโนโลยีที่น่าสนใจตัวหนึ่ง ยิ่งผนวกเข้ากับ DHTML ที่นับวันยิ่งหวือหวาได้ใจด้วยแล้ว คงเอาชนะใจ Developer หลาย ๆ คนได้ไม่ยาก แต่สำหรับในเชิงการพัฒนาเพื่อธุรกิจแล้ว อาจจะทำได้ยาก เพราะความไม่แน่นอนของพฤติกรรมของผู้ใช้ อาจจะเป็นปัจจัยหลักในการตัดสินใจนำมาใช้สำหรับผู้บริหารได้
แหล่งอ้างอิง





แหะ ยาวไปนิดนึง สรุปว่าเราต้อง install โปรแกรมลงในเครื่อง และเพิ่มโค้ดลงในเว็บด้วยใช่รึเปล่าครับ
ใช่ครับ
ประมาณนั้น…
แต่อยากให้ ช่วยแปล โมดูล ทั้ง 3 ตัวให้หน่อยครับ
จะขอพระคุณมากมายๆๆ
โมดูลไหนครับ
มันจะเหมาะกับอะไรครับเพราะว่าผู้ใช้เว็บส่วนใหญ่ต้องการข้อมูลที่ update แล้ว
ถ้ามันไปเอาจาก cache มาซะหมดยิ่งเล่นเว็บไม่สนุกสิครับ -__-’
ใช่ครับ แต่ข้อมูลบางประเภทก็ไม่ได้มีการอัพเดททุกชั่วโมง หรือทุกนาทีนะครับ ข้อมูลบางประเภท เช่น ข้อมูลบนเว็บพอร์ทัล ข้อมูลบางประเภทไม่จำเป็นต้องอัพเดท realtime ครับ อย่างที่ผมอธิบายไปแล้ว ลองดูในหัวข้อ “เมื่อไหร่ที่จะควรหรือไม่ควรทำ Offline Data” นะครับ น่าจะชัดเจนมากขึ้น
อยากให้อธิบายเรื่อง Background Sync หน่อยค่ะ ว่าต้องนำมาใช้งานจริงยังงัย อยากได้วิธีการทำน่ะค่ะ ขอบคุณมากมายค่ะ
ลองเข้าไปดู tutorial ที่เว็บ http://code.google.com/apis/gears/tutorial.html ได้เลยครับ
ขอบคุณค่ะ
ผมก็คิดว่ามันไม่น่าจะไปได้ไกลนะครับ
เพราะทุกวันนี้เราต้องการจะได้ข้อมูลใหม่ๆ อยู่แล้ว
หากข้อมูลเก่าไหนที่เราต้องการเก็บไว้ก็ save page นั้นไว้
จะเร็วกว่านะครับ
ปล. แค่ความคิดเห็นของคนหนึ่งคนนะครับ
ในมุมมองของผม มันขึ้นอยู่กับ application ครับ ผมหมายถึงการนำไปประยุกต์ใช้ อย่างเช่นการใช้งาน application อย่างพวก mail, calendar, task อะไรพวกนี้
ถ้าจะให้มานั่ง save ทุกหน้า คงจะแปลกพิลึกครับ