Tags:

HTML5 ประกอบด้วยเทคโนโลยีหลายส่วน เช่น แท็กแบบใหม่ๆ, audio/video, canvas, geolocation ฯลฯ ส่วนประกอบหนึ่งที่สำคัญไม่น้อยแต่คนไม่ค่อยพูดถึงเท่าไรคือความสามารถของ "เว็บเพจ" (หรืออาจเรียกมันว่าเป็น "เว็บแอพพลิเคชัน" ก็ได้) ในการเก็บข้อมูลแบบออฟไลน์ ซึ่งก็แยกย่อยได้อีกหลายชนิดมาก (HTML4 เก็บได้เฉพาะคุกกี้เล็กๆ นิดเดียว)

เว็บไซต์ InfoWorld สรุปมาสั้นๆ ดี ผมเลยมาสรุปอีกทีให้สั้นกว่าเดิม เพื่อคนที่สนใจ HTML5 จะไปตามต่อได้ถูกครับ

Web Storage

เทคโนโลยีแรกคือ Web Storage ซึ่งเป็นการเก็บข้อมูลแบบง่ายๆ ในรูป key-value (ภาษาโปรแกรมบางภาษาเรียก dictionary) ซึ่งแยกย่อยได้อีก 2 อย่าง คือ

  • Session storage เก็บข้อมูลเฉพาะเซสชันการท่องเว็บนั้นๆ ปิดแท็บเมื่อไรข้อมูลก็หายไป ใช้ออบเจคต์ชนิด sessionStorage อันนี้ไม่ซับซ้อน
  • Local storage เก็บข้อมูลระยะยาว (persistence) โดยใช้ออบเจคต์ชื่อ localStorage ซึ่งจะซับซ้อนขึ้น เพราะเราสามารถเปิดเว็บเพจเดียวกันใน 2 แท็บหรือมากกว่า ซึ่งมันจะแชร์ข้อมูลก้อนเดียวกัน

ฟีเจอร์ Web Storage จะคล้ายกับ Google Gears เมื่อ 3-4 ปีก่อนหน้านี้ เพียงแต่ Web Storage รวมมากับ HTML5 เลย ไม่ต้องลงปลั๊กอินเพิ่มเองแบบ Gears

ฐานข้อมูล

การเก็บข้อมูลง่ายๆ แบบ key-value อาจไม่เพียงพอต่อความต้องการของนักพัฒนา HTML5 จึงเพิ่มวิธีการเก็บข้อมูลที่ซับซ้อนขึ้นมา ซึ่งก็คือฐานข้อมูลแบบที่เราคุ้นเคยนั่นเอง

ปัญหาของฐานข้อมูลใน HTML5 ก็คือมาตรฐานที่แยกเป็นสองทาง

  • Web SQL Database มันคือการนำ SQL มายัดใส่เบราว์เซอร์ (ส่วนมากนิยม SQLite) ตอนนี้ใช้ได้แค่เบราว์เซอร์ตระกูล WebKit และ Opera แนวทางนี้มีข้อเสียตรงความซับซ้อนของ SQL และเริ่มหมดความนิยมแล้ว (ทั้งที่มาตรฐานยังไม่เสร็จ)
  • IndexedDB แนวทางใหม่ที่สร้างขึ้นในภายหลัง ไม่ใช้ SQL แต่เก็บข้อมูลแบบ key-value เหมือนกับ Web Storage เพียงแต่เพิ่มการทำดัชนี (index) ช่วยให้หาข้อมูลได้รวดเร็วขึ้น และเพิ่มเรื่อง transactions เพื่อความปลอดภัยของข้อมูลมาด้วย

Blognone เคยลงเรื่อง Web SQL vs IndexedDB ไปครั้งหนึ่งแล้ว ย้อนอ่านรายละเอียดได้ในตอนเก่าครับ

File API

เราพูดถึงการเก็บข้อมูลแบบง่ายๆ และการเก็บลงฐานข้อมูลไปแล้ว ลำดับถัดไปคือการจัดการกับ "ไฟล์" นั่นเอง HTML5 มี API มาให้เราสองตัวคือ FileReader กับ FileWriter หน้าที่ก็ตามชื่อครับ

ปัญหาของ FileReader ที่จะต้องสนใจคือความแตกต่างระหว่างไฟล์ที่อยู่ในเครื่อง กับไฟล์ที่อยู่บนเว็บ ซึ่งกำลังพัฒนากันอยู่

ส่วน FileWriter มีข้อกังวลเรื่องความปลอดภัย เพราะต่อจากนี้ไปเว็บเพจจะสามารถเขียนไฟล์ในเครื่องเราได้ มาตรการแก้ไขจุดอ่อนนี้ก็ต้องพัฒนากันต่อไป

แคชสำหรับเวลาออฟไลน์

เมื่อเว็บแอพพลิเคชันไม่ได้ต่อเน็ต ก็ต้องมีวิธีจัดการกับข้อมูลที่เกิดขึ้นระหว่างนั้น ซึ่งเป็นหน้าที่ของ AppCaching API ที่บอกว่าเว็บแอพพลิเคชันจะถูกเก็บไว้บนเครื่องนานแค่ไหน ทำให้เว็บแอพมีลักษณะคล้ายๆ กับแอพที่ติดตั้งแบบปกติมากขึ้น

รายละเอียดของวิธีการเก็บข้อมูลแต่ละชนิด ไปตามต่อกันใน HTML5 Tutorial กันเองนะครับ

ที่มา - InfoWorld

Comments

By: lingjaidee
Windows PhoneAndroidWindows
lingjaidee's blog
on 24/01/11 18:45 #253421 toggle
lingjaidee's picture

จะดีเกินไปแล้วนะเนี่ย .. ชักดูน่ากลัว ^^'

By: HMage
Android
HMage's blog
on 24/01/11 19:03 #253425 toggle
HMage's picture

อ่านดูแล้วเหมือนเว็บแอพพลิเคชันจะคืนสู่สามัญ กลับไปเป็นแอพพลิเคชันธรรมดา ต่างกันแค่สามารถแจกให้แต่ละเครื่องใช้ได้ทันทีที่ต้องการ ไม่ต้องออกไปหาซื้อหรือรอดาวน์โหลดเป็นวันๆ


Hello blognone.

By: takz1977
iPhoneUbuntuWindows
takz1977's blog
on 24/01/11 19:05 #253428 toggle
takz1977's picture

เหมือน หรือแตกต่าง หรือคนละเรื่องกันกับ nosql ครับ


^_^

By: way_cs16
Windows PhoneAndroidBlackberry
way_cs16's blog
on 24/01/11 19:46 #253436 Reply to:253428 toggle
way_cs16's picture

คนละเรื่องเลยครับ NoSql ก็คือฐานข้อมูลบนเซิร์ฟเวอร์ ที่มีวิธีจัดเก็บข้อมูลใหม่ ลด ชนิดข้อมูล ตัดคำสั่ง insert update delete select ทิ้ง อาศัยเร้วเท่านั้น

แต่ตามบทความนี้คือ ทำไงเราจะเก็บไฟล์บนไคล์เอนท์แล้วยังใช้งานเว็บแอพพลีเคชันได้เหมือนเดิมโดย ไม่ต้องส่ง Request post get กลับไปที่เซิร์ฟเวอร์ อาศัย javascript กับ html5 นี่แหละ เขียนไฟล์ลงบนเครื่อง client ได้เลย

By: PaPaSEK
ContributorAndroidWindowsIn Love
PaPaSEK's blog
on 24/01/11 19:56 #253439 Reply to:253428 toggle
PaPaSEK's picture

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

แต่จะว่าไปเราเห็นว่าสนุก คนอื่นก็อาจไม่คิดแบบนั้นเนอะ -_-"

By: PaPaSEK
ContributorAndroidWindowsIn Love
PaPaSEK's blog
on 24/01/11 19:37 #253433 toggle
PaPaSEK's picture

อ่านแล้วทำให้คิดว่า Browser ก็ต้องมีความรอบคอบมากขึ้นด้วยในหลายๆ ด้าน ไม่งั้นอะไรที่เก็บไว้ในส่วน Local Storage ก็คงถูกดึงออกไปได้จากช่องโหว่

ยิ่งเว็บ//เทคโนโลยีมันฉลาดมากขึ้น ผมคิดว่าช่องโหว่มันก็ยิ่งมากขึ้นตามไปด้วย

By: takz1977
iPhoneUbuntuWindows
takz1977's blog
on 24/01/11 20:10 #253442 Reply to:253433 toggle
takz1977's picture

กำลังจะเริ่มอ่านครับ http://html5tutorial.net/

ปล.นอกเรื่อง-กำลังนั่งมองบอทเกมส์ของเฟซบุ๊คเกมส์หนึ่งที่ใช้ SQLite


^_^

By: PaPaSEK
ContributorAndroidWindowsIn Love
PaPaSEK's blog
on 24/01/11 20:46 #253449 Reply to:253442 toggle
PaPaSEK's picture

อยากแงะล่ะสิท่า

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 24/01/11 22:41 #253467 Reply to:253433 toggle
mr_tawan's picture

อะไรที่ซับซ้อนมาก ช่องโหว่มันก็มากขึ้นครับ เรื่องปรกติ


By: cloverink
iPhoneAndroidUbuntu
cloverink's blog
on 24/01/11 19:55 #253438 toggle
cloverink's picture

น่ากลัวเหมือนกัน


i = NulL

By: artiya4u
AndroidUbuntu
artiya4u's blog
on 25/01/11 7:27 #253554 toggle
artiya4u's picture

ตอนนี้ google chrome ก็ใช้ SQLite เก็บคุกกี้อยู่แล้วนิ


If today was perfect there would be no need for tomorrow.

By: 9rockky
AndroidWindows
9rockky's blog
on 25/01/11 18:26 #253697 toggle
9rockky's picture

น่าสนุกขึ้นเรื่อยๆ


CCCP

By: Bank14
BlackberryUbuntuWindows
Bank14's blog
on 25/01/11 23:15 #253739 toggle
Bank14's picture

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


+Autthapon | BLOG

By: silvermeteor
iPhoneAndroid
silvermeteor's blog
on 26/01/11 0:42 #253759 toggle
silvermeteor's picture

มีกระทั่ง DB จะเหลืออะไรให้เซิร์ฟเวอร์ทำเนี่ย

ต้องเรียนรู้อีกเพียบเลยแฮะ


ไล่ตามความฝัน... itexcite

By: pines
Blackberry
pines's blog
on 26/01/11 19:03 #253963 toggle
pines's picture

ไม่ต้อง post ไม่ต้อง get คงจะเร็วดีพิลึก แจ๋วๆ

By: artiya4u
AndroidUbuntu
artiya4u's blog
on 26/01/11 20:02 #253974 toggle
artiya4u's picture

โหลดบิตทางหน้าเว็บใกล้มาถึงแล้ว


If today was perfect there would be no need for tomorrow.

By: HudchewMan
ContributorAndroidWindows
HudchewMan's blog
on 02/02/11 8:43 #255564 Reply to:253974 toggle
HudchewMan's picture

--> โหลดบิตทางหน้าเว็บใกล้มาถึงแล้ว

แบบนั้นมีแล้วนะ ^^

http://www.9tana.com/node/bitlet/


~ จุดยืนของทุกคนคือส้นเท้า : HudchewMan's Diary | TH LG Optimus Black ~