0Pricing
HTML Academy · บทเรียน

localStorage เทียบกับ sessionStorage

ทำความเข้าใจอายุการใช้งานและขอบเขตของพื้นที่จัดเก็บแต่ละประเภท

localStorage เทียบกับ sessionStorage เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

ภาพรวมส่วนติดต่อโปรแกรมพื้นที่จัดเก็บข้อมูลเว็บ

ส่วนติดต่อโปรแกรมพื้นที่จัดเก็บข้อมูลเว็บมีพื้นที่จัดเก็บข้อมูลแบบคีย์-ค่าฝั่งไคลเอ็นต์สองแบบ ได้แก่ localStorage ซึ่งคงอยู่ข้ามเซสชัน และ sessionStorage ซึ่งถูกล้างเมื่อปิดแท็บ ทั้งสองแบบจัดเก็บค่าเป็นสตริง และสามารถเข้าถึงแบบซิงโครนัสผ่าน JavaScript ได้เมื่ออยู่ในต้นทางเดียวกัน

ความคงอยู่ของ localStorage

ข้อมูลใน localStorage จะคงอยู่จนกว่าจะถูกล้างอย่างชัดเจนด้วยโค้ด โดยผู้ใช้ หรือด้วยการลบข้อมูลเบราว์เซอร์ ข้อมูลยังคงอยู่หลังการเริ่มเบราว์เซอร์ใหม่ การรีเฟรชหน้าเว็บ และการปิดแท็บ โดยทั่วไปความจุอยู่ที่ 5-10MB ต่อต้นทาง ทั้งนี้ขึ้นอยู่กับเบราว์เซอร์

ขอบเขตของ sessionStorage

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

ความคล้ายคลึงของส่วนติดต่อโปรแกรม

พื้นที่จัดเก็บข้อมูลทั้งสองแบบใช้ส่วนติดต่อโปรแกรมเดียวกัน ได้แก่ setItem(key, value), getItem(key), removeItem(key), clear() และพร็อพเพอร์ตี้ length โค้ดเดียวกันใช้ได้กับทั้งสองแบบ เพียงแทนที่ localStorage ด้วย sessionStorage หรือแทนที่กลับกัน

การเลือกระหว่างสองแบบ

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

ข้อจำกัดต้นทางเดียวกัน

พื้นที่จัดเก็บข้อมูลทั้งสองแบบกำหนดขอบเขตอย่างเคร่งครัดตามต้นทาง ซึ่งประกอบด้วยโพรโทคอล + โฮสต์ + พอร์ต https://example.com ไม่สามารถอ่าน localStorage ที่กำหนดโดย http://example.com ได้ นี่คือขอบเขตด้านความปลอดภัย โดยโดเมนย่อยก็เป็นต้นทางแยกกันเช่นเดียวกัน เว้นแต่จะมีการแก้ไข document.domain ซึ่งเลิกใช้งานแล้ว

ความจุของพื้นที่จัดเก็บข้อมูล

เบราว์เซอร์ส่วนใหญ่กำหนดขีดจำกัดประมาณ 5MB ต่อต้นทาง หากใช้เกินขีดจำกัด จะเกิดข้อผิดพลาด QuotaExceededError ความต้องการจัดเก็บข้อมูลขนาดใหญ่ควรใช้ IndexedDB ซึ่งรองรับข้อมูลแบบมีโครงสร้างได้หลายกิกะไบต์ พื้นที่จัดเก็บข้อมูลเว็บเหมาะสำหรับคู่คีย์-ค่าขนาดเล็ก ไม่ใช่ข้อมูลไบนารีหรือชุดข้อมูลขนาดใหญ่

ลักษณะการทำงานแบบซิงโครนัส

การอ่านและเขียนพื้นที่จัดเก็บข้อมูลเว็บเป็นแบบซิงโครนัสและบล็อกเธรดหลัก สำหรับการอ่านหรือเขียนข้อมูลขนาดใหญ่ การทำงานนี้อาจทำให้หน้าเว็บกระตุก ควรใช้ IndexedDB สำหรับการดำเนินการกับข้อมูลขนาดใหญ่ที่เกิดขึ้นบ่อย และควรเก็บค่าในพื้นที่จัดเก็บข้อมูลเว็บให้มีขนาดเล็กและเกิดขึ้นไม่บ่อย เพื่อหลีกเลี่ยงปัญหาด้านประสิทธิภาพ

รูปแบบการทำซีเรียลไลซ์

พื้นที่จัดเก็บข้อมูลเว็บจัดเก็บได้เฉพาะสตริง ให้แปลงวัตถุเป็นอนุกรมด้วย JSON.stringify(); และแปลงกลับด้วย JSON.parse() จัดการความล้มเหลวของ parse: try { return JSON.parse(stored) } catch { return defaultValue } ค่าที่เสียหายหรือไม่อยู่ในรูปแบบข้อมูลที่ถูกต้องจะทำให้เกิดข้อผิดพลาดจากการแปลง

พื้นที่จัดเก็บข้อมูลในโหมดส่วนตัวหรือไม่ระบุตัวตน

localStorage ในโหมดส่วนตัวหรือไม่ระบุตัวตนจะถูกล้างเมื่อปิดหน้าต่างส่วนตัวทั้งหมด จึงมีพฤติกรรมเหมือน sessionStorage โค้ดที่ใช้ localStorage สำหรับสถานะการยืนยันตัวตนควรรองรับกรณีที่ localStorage ถูกล้างโดยไม่คาดคิด

ข้อจำกัดสำหรับบุคคลที่สาม

เบราว์เซอร์จำกัดการเข้าถึงพื้นที่จัดเก็บข้อมูลของบุคคลที่สามมากขึ้นเรื่อย ๆ เฟรมแบบฝังจากเว็บไซต์ของบุคคลที่สามบนเว็บไซต์ต้นทางไม่สามารถเข้าถึง localStorage ของเว็บไซต์ของบุคคลที่สามได้ ITP ของเบราว์เซอร์ซาฟารีและการป้องกันการติดตามขั้นสูงของไฟร์ฟอกซ์แบ่งพื้นที่จัดเก็บข้อมูลออกเป็นส่วน ๆ แต่การใช้งานจากต้นทางจะไม่ได้รับผลกระทบ

ตรวจสอบความรู้

sessionStorage ถูกล้างเมื่อใด

สรุป

localStorage จะคงอยู่โดยไม่มีกำหนดจนกว่าจะถูกล้างด้วยโปรแกรมหรือโดยผู้ใช้ ส่วน sessionStorage จะถูกล้างเมื่อปิดแท็บ ทั้งสองแบบกำหนดขอบเขตตามต้นทาง ทำงานแบบซิงโครนัส และเป็นพื้นที่จัดเก็บข้อมูลแบบคีย์-ค่าสตริงที่มีความจุประมาณ 5MB ใช้ localStorage สำหรับค่ากำหนดและสถานะถาวร ใช้ sessionStorage สำหรับสถานะชั่วคราวที่อยู่ในขอบเขตเซสชันและไม่ควรคงอยู่หลังปิดแท็บ

คำถามที่พบบ่อย

บทเรียน “localStorage เทียบกับ sessionStorage” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “localStorage เทียบกับ sessionStorage” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “localStorage เทียบกับ sessionStorage”

ทำความเข้าใจอายุการใช้งานและขอบเขตของพื้นที่จัดเก็บแต่ละประเภท คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “localStorage เทียบกับ sessionStorage” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม

ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. localStorage เทียบกับ sessionStorage
  2. การรับ การตั้งค่า และการลบรายการ
  3. การรับฟังเหตุการณ์พื้นที่จัดเก็บข้อมูล
  4. ความปลอดภัย: สิ่งที่ไม่ควรจัดเก็บในพื้นที่จัดเก็บข้อมูล
← กลับไปที่ HTML Academy