Local Storage

local storage = พื้นที่ ที่ web application สามารถเก็บ data ไว้ที่ฝั่ง user / client ได้

วิธีการใช้งาน

เบื้องต้น

// basic
localStorage.setItem( 'afavoriteflavor', 'vanilla' ); // set item
// localStorage.removeItem( 'favoriteflavor'); // remove item
var taste = localStorage.getItem( 'afavoriteflavor' ); // get item

วิธีเก็บ object ลง local storage

local storage เก็บได้แค่ string ดังนั้นต้องใช้ json ช่วย

var car = {};
car.wheels = 4;
car.doors = 2;
car.sound = 'vroom';
car.name = 'Lightning McQueen';
localStorage.setItem( 'car2', JSON.stringify( car ) );

วิธีดูค่า localStorage

Local Storage
Local Storage

1. ใช้ javascript เก็บค่าออกมา เช่น localStorage.getItem()
2. ดูจาก browser (ตัวอย่างได้จากรูปด้านบน)

Local Storage VS Cookie

เปรียบเทียบคุณลักษณะ

Local Storage

  • อยู่ฝั่ง client
  • local storage เก็บได้ประมาณ 5mb
  • ไม่มี expiration date, ลบได้จาก javascript / browser cache เท่านั้น
  • ไม่ต้องส่งข้อมูลไปยัง server

Cookie

  • อยู่ฝั่ง server
  • cookie เก็บ data ได้ประมาณ 4 kb (4096 bytes)
  • มี expiration date
  • cookie จะมากับ HTTP request ดังนั้นจะทำให้ web application ช้าลง
    เพราะส่วนใหญ่ data ที่ส่งมาก็เป็น data เดิมๆบ่อยครั้ง
  • จากการที่ cookie มากับ HTTP request ทำให้ data ที่อยู่ใน cookie ไม่ปลอดภัย
    เพราะ HTTP ไม่มีการเข้ารหัส (ยกเว้นทั้ง web จะเป็น HTTPS)

cookies and local storage นั้นต่างกันชัดเจน
cookies ใช้ในการอ่านค่าจากฝั่ง server
local storage ใช้ฝั่ง client

ดังนั้นเวลาเราเลือกใช้ควรจะถามใหม่ว่า application ของเราเนี่ย, ฝั่งไหนที่ต้องการใช้ data นั้น
ถ้าใช้ฝั่ง client (javascript) ก็แนะนำให้มาที่ localStorage เลยดีกว่าครับ เพราะถ้าใช้ cookie จะเปลือง bandwidth เปล่าๆตอนที่ cookie มากับ HTTP header
ถ้าใช้ฝั่ง server มันก็ไม่สะดวกเวลาที่เราต้องการส่ง data ผ่านไปยังหน้าอื่นๆ เช่นเราอาจจะใช้ ajax, hidden field อื่นๆ ถ้าแบบนี้ใช้ cookie ไปเลย สะดวกกว่า

Session Storage

นอกจาก local storage แล้วก็ยังมี session storage อีกด้วย โดยความต่างของทั้งสองคือ
window.localStorage – เก็บ data ได้โดยไม่มี expiration date
window.sessionStorage – เก็บ data ได้ 1 session (data จะหายไปเมื่อปิด tab)