ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

HTML5 Web Storage (LocalStorage และ SessionStorage)

บทนี้แนะนำ HTML5 Web Storage ซึ่งเป็นกลไกในการจัดเก็บข้อมูลในเบราว์เซอร์ของผู้ใช้ มีสองประเภทหลักคือ LocalStorage (เก็บข้อมูลถาวร) และ SessionStorage (เก็บข้อมู...

HTML5 Web Storage (LocalStorage และ SessionStorage)

ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับการใช้ HTML5 Geolocation API เพื่อเข้าถึงข้อมูลตำแหน่งของผู้ใช้ ในบทนี้ เราจะมาสำรวจอีกหนึ่งฟีเจอร์ที่ทรงพลังของ HTML5 ซึ่งก็คือ Web Storage ซึ่งเป็นกลไกสำหรับจัดเก็บข้อมูลในเบราว์เซอร์ของผู้ใช้โดยตรง ทำให้เราสามารถสร้างเว็บแอปพลิเคชันที่สามารถทำงานแบบออฟไลน์ หรือเก็บข้อมูลผู้ใช้ระหว่างเซสชันได้

Web Storage คืออะไร?

Web Storage เป็น API ที่อนุญาตให้เว็บแอปพลิเคชันจัดเก็บข้อมูลในเบราว์เซอร์ของผู้ใช้ ข้อมูลนี้จะถูกจัดเก็บเป็นคู่ key-value ซึ่งคล้ายกับการทำงานของ cookies แต่มีข้อดีกว่าหลายประการ เช่น ขนาดพื้นที่จัดเก็บที่ใหญ่กว่า (5-10MB ต่อโดเมน) และประสิทธิภาพที่ดีกว่า

HTML5 Web Storage มีสองประเภทหลักๆ คือ LocalStorage และ SessionStorage ซึ่งมีความแตกต่างกันในเรื่องระยะเวลาการเก็บรักษาข้อมูล:

  • LocalStorage: ข้อมูลที่จัดเก็บใน LocalStorage จะยังคงอยู่ แม้ว่าผู้ใช้จะปิดเบราว์เซอร์หรือรีสตาร์ทเครื่องคอมพิวเตอร์ ข้อมูลนี้จะถูกลบออกก็ต่อเมื่อผู้ใช้ลบด้วยตนเอง หรือเว็บแอปพลิเคชันสั่งให้ลบ
  • SessionStorage: ข้อมูลที่จัดเก็บใน SessionStorage จะอยู่ได้เฉพาะในระหว่างเซสชันของเบราว์เซอร์เท่านั้น เมื่อผู้ใช้ปิดแท็บหรือหน้าต่างเบราว์เซอร์ ข้อมูลที่อยู่ใน SessionStorage จะถูกลบทิ้ง

ความแตกต่างระหว่าง LocalStorage และ SessionStorage

ตารางสรุปความแตกต่างระหว่าง LocalStorage และ SessionStorage:

คุณสมบัติ LocalStorage SessionStorage
ระยะเวลาการเก็บรักษา ถาวร (จนกว่าจะถูกลบ) เฉพาะในระหว่างเซสชัน
ขอบเขต โดเมน แท็บหรือหน้าต่างเบราว์เซอร์
ความเหมาะสมในการใช้งาน ข้อมูลที่ต้องการเก็บไว้นาน เช่น การตั้งค่าผู้ใช้, ข้อมูลออฟไลน์ ข้อมูลที่เกี่ยวข้องกับเซสชันปัจจุบัน เช่น ข้อมูลตะกร้าสินค้า, สถานะการเข้าสู่ระบบ

การใช้งาน Web Storage API

Web Storage API มี methods หลักๆ 4 ตัวที่ใช้ในการจัดการข้อมูล:

  • `setItem(key, value)`: ใช้สำหรับบันทึกข้อมูล โดยระบุ key และ value ที่ต้องการจัดเก็บ
  • `getItem(key)`: ใช้สำหรับดึงข้อมูล โดยระบุ key ที่ต้องการดึงข้อมูล
  • `removeItem(key)`: ใช้สำหรับลบข้อมูล โดยระบุ key ที่ต้องการลบข้อมูล
  • `clear()`: ใช้สำหรับลบข้อมูลทั้งหมดที่จัดเก็บไว้ใน LocalStorage หรือ SessionStorage

การบันทึกข้อมูลด้วย `localStorage.setItem()` และ `sessionStorage.setItem()`

Method `setItem()` ใช้สำหรับบันทึกข้อมูลใน LocalStorage หรือ SessionStorage โดยต้องระบุ key และ value ที่ต้องการจัดเก็บ Value จะถูกแปลงเป็น string โดยอัตโนมัติ

ตัวอย่างการบันทึกข้อมูลใน LocalStorage:

localStorage.setItem('username', 'JohnDoe');
localStorage.setItem('theme', 'dark');

ตัวอย่างการบันทึกข้อมูลใน SessionStorage:

sessionStorage.setItem('cartItems', JSON.stringify(['Product1', 'Product2']));
sessionStorage.setItem('isLoggedIn', 'true');

คำอธิบาย:

  • ในตัวอย่าง LocalStorage เราบันทึกชื่อผู้ใช้และธีมที่เลือก
  • ในตัวอย่าง SessionStorage เราบันทึกข้อมูลตะกร้าสินค้า (แปลงเป็น JSON string) และสถานะการเข้าสู่ระบบ

การดึงข้อมูลด้วย `localStorage.getItem()` และ `sessionStorage.getItem()`

Method `getItem()` ใช้สำหรับดึงข้อมูลจาก LocalStorage หรือ SessionStorage โดยต้องระบุ key ที่ต้องการดึงข้อมูล Method นี้จะคืนค่าเป็น string หรือ null หาก key นั้นไม่มีอยู่

ตัวอย่างการดึงข้อมูลจาก LocalStorage:

const username = localStorage.getItem('username');
const theme = localStorage.getItem('theme');

console.log('Username:', username); // Output: Username: JohnDoe
console.log('Theme:', theme);       // Output: Theme: dark

ตัวอย่างการดึงข้อมูลจาก SessionStorage:

const cartItemsString = sessionStorage.getItem('cartItems');
const isLoggedInString = sessionStorage.getItem('isLoggedIn');

const cartItems = JSON.parse(cartItemsString);
const isLoggedIn = isLoggedInString === 'true';

console.log('Cart Items:', cartItems);   // Output: Cart Items: ['Product1', 'Product2']
console.log('Is Logged In:', isLoggedIn); // Output: Is Logged In: true

คำอธิบาย:

  • เราดึงข้อมูลชื่อผู้ใช้และธีมจาก LocalStorage โดยตรง
  • สำหรับ SessionStorage เราดึงข้อมูลตะกร้าสินค้าและสถานะการเข้าสู่ระบบ และต้องแปลง JSON string กลับเป็น array และแปลง string 'true' เป็น boolean

การลบข้อมูลด้วย `localStorage.removeItem()` และ `sessionStorage.removeItem()`

Method `removeItem()` ใช้สำหรับลบข้อมูลออกจาก LocalStorage หรือ SessionStorage โดยต้องระบุ key ที่ต้องการลบข้อมูล

ตัวอย่างการลบข้อมูลจาก LocalStorage:

localStorage.removeItem('username');

ตัวอย่างการลบข้อมูลจาก SessionStorage:

sessionStorage.removeItem('cartItems');

การลบข้อมูลทั้งหมดด้วย `clear()`:

Method `clear()` ใช้สำหรับลบข้อมูลทั้งหมดที่จัดเก็บไว้ใน LocalStorage หรือ SessionStorage

ตัวอย่างการลบข้อมูลทั้งหมดจาก LocalStorage:

localStorage.clear();

ตัวอย่างการลบข้อมูลทั้งหมดจาก SessionStorage:

sessionStorage.clear();

ข้อควรระวังในการใช้งาน Web Storage

ถึงแม้ว่า Web Storage จะเป็นเครื่องมือที่มีประโยชน์ แต่ก็มีข้อควรระวังบางประการที่ควรคำนึงถึง:

  • ความปลอดภัย: Web Storage ไม่ได้ถูกเข้ารหัส ข้อมูลที่จัดเก็บไว้สามารถถูกเข้าถึงได้โดย JavaScript ที่ทำงานบนโดเมนเดียวกัน ดังนั้น ไม่ควรจัดเก็บข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่าน หรือข้อมูลบัตรเครดิต
  • ขนาดพื้นที่จัดเก็บ: แม้ว่า Web Storage จะมีพื้นที่จัดเก็บมากกว่า cookies แต่ก็ยังมีข้อจำกัด ควรตรวจสอบให้แน่ใจว่าข้อมูลที่จัดเก็บไม่เกินขีดจำกัดที่กำหนด (5-10MB ต่อโดเมน)
  • การสนับสนุนเบราว์เซอร์: Web Storage ได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่ทั้งหมด แต่ควรตรวจสอบให้แน่ใจว่าเว็บแอปพลิเคชันของคุณทำงานได้อย่างถูกต้องบนเบราว์เซอร์เก่าๆ ด้วย
  • การจัดการข้อมูล: ควรมีการวางแผนการจัดการข้อมูลที่ดี เพื่อให้แน่ใจว่าข้อมูลที่จัดเก็บไว้มีความถูกต้องและเป็นปัจจุบัน

ตัวอย่างการใช้งาน Web Storage

ตัวอย่าง 1: บันทึกและแสดงชื่อผู้ใช้

<input type="text" id="username" placeholder="Enter your username">
<button onclick="saveUsername()">Save</button>
<p id="greeting"></p>

<script>
  function saveUsername() {
    const username = document.getElementById('username').value;
    localStorage.setItem('savedUsername', username);
    displayGreeting();
  }

  function displayGreeting() {
    const savedUsername = localStorage.getItem('savedUsername');
    if (savedUsername) {
      document.getElementById('greeting').textContent = `Hello, ${savedUsername}!`;
    } else {
      document.getElementById('greeting').textContent = 'Please enter your username.';
    }
  }

  // Display greeting on page load
  displayGreeting();
</script>

ตัวอย่าง 2: นับจำนวนการเข้าชมเว็บไซต์

<p id="visitCount"></p>

<script>
  let visitCount = localStorage.getItem('visitCount');

  if (visitCount) {
    visitCount = parseInt(visitCount) + 1;
  } else {
    visitCount = 1;
  }

  localStorage.setItem('visitCount', visitCount);
  document.getElementById('visitCount').textContent = `You have visited this page ${visitCount} times.`;
</script>

สรุป

HTML5 Web Storage เป็นเครื่องมือที่มีประโยชน์สำหรับการจัดเก็บข้อมูลในเบราว์เซอร์ของผู้ใช้ LocalStorage เหมาะสำหรับข้อมูลที่ต้องการเก็บไว้นาน เช่น การตั้งค่าผู้ใช้ ในขณะที่ SessionStorage เหมาะสำหรับข้อมูลที่เกี่ยวข้องกับเซสชันปัจจุบัน เช่น ข้อมูลตะกร้าสินค้า การใช้งาน Web Storage อย่างถูกต้องจะช่วยให้คุณสร้างเว็บแอปพลิเคชันที่สามารถทำงานแบบออฟไลน์ หรือเก็บข้อมูลผู้ใช้ระหว่างเซสชันได้อย่างมีประสิทธิภาพ

ในบทต่อไป เราจะเรียนรู้เกี่ยวกับ HTML5 Web Workers ซึ่งเป็น API ที่ช่วยให้เราสามารถรัน JavaScript ใน background threads เพื่อปรับปรุงประสิทธิภาพของเว็บแอปพลิเคชัน

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์