นอกเหนือจากการไม่คงอยู่และถูกกำหนดขอบเขตไปยังหน้าต่างปัจจุบันเท่านั้นยังมีประโยชน์อื่นใดบ้าง (ประสิทธิภาพการเข้าถึงข้อมูลและอื่น ๆ ) ไปยังที่จัดเก็บข้อมูลเซสชันผ่านการจัดเก็บในท้องถิ่นหรือไม่
นอกเหนือจากการไม่คงอยู่และถูกกำหนดขอบเขตไปยังหน้าต่างปัจจุบันเท่านั้นยังมีประโยชน์อื่นใดบ้าง (ประสิทธิภาพการเข้าถึงข้อมูลและอื่น ๆ ) ไปยังที่จัดเก็บข้อมูลเซสชันผ่านการจัดเก็บในท้องถิ่นหรือไม่
คำตอบ:
localStorageและsessionStorageทั้งขยายการจัดเก็บข้อมูล มีความแตกต่างระหว่างพวกเขายกเว้นตั้งใจ "ไม่ติดตา" sessionStorage
ไม่เป็น
นั่นคือข้อมูลที่เก็บไว้ในยังคงมีอยู่จนกว่าจะถูกลบอย่างชัดเจนlocalStorage
การเปลี่ยนแปลงที่ทำจะถูกบันทึกและพร้อมใช้งานสำหรับการเยี่ยมชมเว็บไซต์ในปัจจุบันและอนาคตทั้งหมด
สำหรับsessionStorage
, การเปลี่ยนแปลงจะมีให้เฉพาะต่อแท็บ การเปลี่ยนแปลงที่ทำจะถูกบันทึกและพร้อมใช้งานสำหรับหน้าปัจจุบันในแท็บนั้นจนกว่าจะถูกปิด เมื่อปิดแล้วข้อมูลที่เก็บไว้จะถูกลบ
ความแตกต่างเพียงอย่างเดียวคือ localStorage มีเวลาหมดอายุที่แตกต่างกันsessionStorage
จะสามารถเข้าถึงได้ในขณะที่และโดยหน้าต่างที่สร้างขึ้นเท่านั้นจะเปิดขึ้น localStorage
คงอยู่จนกว่าคุณจะลบมันหรือผู้ใช้ลบมัน
ช่วยบอกว่าคุณต้องการที่จะบันทึกชื่อผู้ใช้เข้าสู่ระบบและรหัสผ่านที่คุณต้องการใช้sessionStorage
มากกว่าlocalStorage
เหตุผลด้านความปลอดภัย (เช่น. บุคคลอื่นเข้าถึงบัญชีของพวกเขาในเวลาต่อมา) แต่ถ้าคุณต้องการที่จะบันทึกการตั้งค่าของผู้ใช้ในเครื่องของพวกเขาที่คุณอาจจะต้องการ
localStorage
ทั้งหมด:
localStorage
- ใช้สำหรับการใช้งานในระยะยาว
sessionStorage
- ใช้เมื่อคุณต้องการเก็บสิ่งที่เปลี่ยนแปลงหรือสิ่งชั่วคราว
มีประเด็นอื่น ๆ อีกเล็กน้อยที่อาจเป็นประโยชน์ในการเข้าใจความแตกต่างระหว่างที่จัดเก็บในตัวเครื่องและเซสชัน
ทั้งที่จัดเก็บในตัวเครื่องและที่เก็บข้อมูลเซสชันถูกกำหนดขอบเขตไว้ที่จุดกำเนิดเอกสารดังนั้น
https://mydomain.com/
http://mydomain.com/
https://mydomain.com:8080/
URL ข้างต้นทั้งหมดจะไม่ใช้พื้นที่เก็บข้อมูลร่วมกัน (เส้นทางการแจ้งให้ทราบของหน้าเว็บไม่ส่งผลกระทบต่อการจัดเก็บเว็บ)
ที่เก็บข้อมูลเซสชันนั้นแตกต่างกันแม้ว่าเอกสารที่มีนโยบายกำเนิดเดียวกันเปิดในแท็บต่าง ๆ ดังนั้นหน้าเว็บเดียวกันที่เปิดในสองแท็บต่างกันจะไม่สามารถแชร์ที่เก็บข้อมูลเซสชันเดียวกันได้
ทั้งในระดับท้องถิ่นและการเก็บรักษาเซสชั่นนอกจากนี้ยังมีขอบเขตโดยผู้ขายเบราว์เซอร์ Chrome หรือ FF ไม่สามารถอ่านข้อมูลหน่วยเก็บที่บันทึกโดย IE ได้
หวังว่านี่จะช่วยได้
ความแตกต่างที่สำคัญระหว่างlocalStorage
และsessionStorage
คือที่sessionStorage
ไม่ซ้ำกันสำหรับแต่ละแท็บ หากคุณปิดแท็บการsessionStorage
ลบlocalStorage
จะไม่ทำเช่นนั้น นอกจากนี้คุณไม่สามารถสื่อสารระหว่างแท็บ :)
ความแตกต่างที่ลึกซึ้งอีกประการหนึ่งคือตัวอย่างเช่นบน Safari (8.0.3) localStorage
มีขีด จำกัด อักขระ 2551 k แต่sessionStorage
มีที่เก็บข้อมูลไม่ จำกัด
บน Chrome (v43) ทั้งคู่localStorage
และsessionStorage
จำกัด ไว้ที่ 5101 k ตัวอักษร (ไม่ต่างจากโหมดปกติ / ไม่ระบุตัวตน)
บน Firefox ทั้งสองlocalStorage
และsessionStorage
ถูก จำกัด ที่ 5,2020 k ตัวอักษร (ไม่แตกต่างกันระหว่างโหมดปกติ / ส่วนตัว)
ไม่ต่างกับความเร็วเลย :)
นอกจากนี้ยังมีปัญหากับ Mobile Safari และ Mobile Chrome, Private Mode Safari & Chrome มีพื้นที่สูงสุด 0KB
sessionStorage
เป็นเช่นเดียวกับlocalStorage
ยกเว้นว่าจะเก็บข้อมูลสำหรับเซสชันเดียวเท่านั้นและจะถูกลบออกเมื่อผู้ใช้ปิดหน้าต่างเบราว์เซอร์ที่สร้างขึ้น
ประสิทธิภาพการทำงานที่ชาญฉลาดการวัด (หยาบ) ของฉันไม่พบความแตกต่างในการเขียนและอ่าน 1,000 ครั้ง
การรักษาความปลอดภัยอย่างชาญฉลาดดูเหมือนว่า localStore อาจถูกปิดตัวลงก่อนที่เซสชันจะเก็บ แต่ไม่มีหลักฐานที่เป็นรูปธรรม - อาจมีคนอื่นทำ?
ฟังก์ชั่นที่ชาญฉลาดเห็นด้วยกับ digitalFresh ด้านบน
การจัดเก็บเซสชันของเซสชันและที่จัดเก็บในตัวเครื่องนั้นเหมือนกันยกเว้นที่จัดเก็บในตัวเครื่องจะเก็บข้อมูลไว้จนกว่าผู้ใช้จะลบแคชและคุกกี้และข้อมูลที่จัดเก็บในเซสชันจะถูกเก็บไว้ในระบบจนกว่าเราจะปิดเซสชัน i จนกว่าเราจะปิด หน้าต่างหน่วยเก็บข้อมูลที่สร้างขึ้น
ประโยชน์ของการจัดเก็บเซสชันมากกว่าที่จัดเก็บในตัวเครื่องในความคิดของฉันคือมันมีความจุไม่ จำกัดใน Firefox และจะไม่คงอยู่นานกว่าเซสชัน (แน่นอนขึ้นอยู่กับเป้าหมายของคุณ)
ที่จัดเก็บในตัวเครื่อง:มันเก็บข้อมูลของผู้ใช้โดยไม่มีวันหมดอายุข้อมูลนี้จะไม่ถูกลบเมื่อผู้ใช้ปิดหน้าต่างเบราว์เซอร์มันจะพร้อมใช้งานสำหรับวันสัปดาห์เดือนและปี
//Set the value in a local storage object
localStorage.setItem('name', myName);
//Get the value from storage object
localStorage.getItem('name');
//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege
การจัดเก็บเซสชัน:มันเหมือนกับวันที่จัดเก็บในท้องถิ่นยกเว้นมันจะลบหน้าต่างทั้งหมดเมื่อผู้ใช้เว็บปิดหน้าต่างเบราว์เซอร์
//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";
อ่านเพิ่มเติมคลิก
sessionStorage
รักษาพื้นที่เก็บข้อมูลแยกต่างหากสำหรับแหล่งกำเนิดที่กำหนดแต่ละแห่งซึ่งพร้อมใช้งานในช่วงเวลาของเซสชันหน้า (ตราบเท่าที่เบราว์เซอร์เปิดอยู่รวมถึงการโหลดหน้าซ้ำและการเรียกคืน)
localStorage
ทำสิ่งเดียวกัน แต่ยังคงอยู่แม้จะปิดและเปิดเบราว์เซอร์ใหม่
ฉันใช้สิ่งนี้จากhttps://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API