HTML5 - ที่เก็บข้อมูลบนเว็บ
HTML5 แนะนำกลไกสองอย่างซึ่งคล้ายกับคุกกี้เซสชัน HTTP สำหรับการจัดเก็บข้อมูลที่มีโครงสร้างบนฝั่งไคลเอ็นต์และเพื่อเอาชนะข้อเสียที่ตามมา
คุกกี้จะรวมอยู่ในทุกคำขอ HTTP ดังนั้นจึงทำให้เว็บแอปพลิเคชันของคุณช้าลงโดยการส่งข้อมูลเดียวกัน
คุกกี้จะรวมอยู่ในทุกคำขอ HTTP ดังนั้นจึงส่งข้อมูลที่ไม่เข้ารหัสผ่านอินเทอร์เน็ต
คุกกี้ถูก จำกัด ไว้ที่ข้อมูลประมาณ 4 KB ไม่เพียงพอที่จะจัดเก็บข้อมูลที่จำเป็น
การจัดเก็บทั้งสองคือ session storage และ local storage และจะใช้เพื่อจัดการกับสถานการณ์ต่างๆ
เบราว์เซอร์ทุกเวอร์ชันล่าสุดรองรับ HTML5 Storage รวมถึง Internet Explorer
พื้นที่จัดเก็บเซสชัน
พื้นที่จัดเก็บเซสชันถูกออกแบบมาสำหรับสถานการณ์ที่ผู้ใช้จะได้ดำเนินการทำรายการเดียว แต่อาจจะมีการดำเนินธุรกรรมหลายในหน้าต่างที่แตกต่างกันในเวลาเดียวกัน
ตัวอย่าง
ตัวอย่างเช่นหากผู้ใช้ซื้อตั๋วเครื่องบินในสองหน้าต่างที่แตกต่างกันโดยใช้ไซต์เดียวกัน หากไซต์ใช้คุกกี้เพื่อติดตามว่าผู้ใช้ซื้อตั๋วใดจากนั้นเมื่อผู้ใช้คลิกจากหน้าหนึ่งไปอีกหน้าหนึ่งในทั้งสองหน้าต่างตั๋วที่ซื้อในปัจจุบันจะ "รั่วไหล" จากหน้าต่างหนึ่งไปยังอีกหน้าต่างหนึ่งซึ่งอาจทำให้ผู้ใช้ ซื้อตั๋วสองใบสำหรับเที่ยวบินเดียวกันโดยไม่ต้องสังเกตจริงๆ
HTML5 แนะนำแอ็ตทริบิวต์sessionStorageซึ่งไซต์จะใช้เพื่อเพิ่มข้อมูลลงในที่เก็บข้อมูลเซสชันและจะสามารถเข้าถึงหน้าใดก็ได้จากไซต์เดียวกันที่เปิดในหน้าต่างนั้นกล่าวคือsession และทันทีที่คุณปิดหน้าต่างเซสชันนั้นจะหายไป
ต่อไปนี้เป็นรหัสที่จะตั้งค่าตัวแปรเซสชันและเข้าถึงตัวแปรนั้น -
<!DOCTYPE HTML>
<html>
<body>
<script type = "text/javascript">
if( sessionStorage.hits ) {
sessionStorage.hits = Number(sessionStorage.hits) +1;
} else {
sessionStorage.hits = 1;
}
document.write("Total Hits :" + sessionStorage.hits );
</script>
<p>Refresh the page to increase number of hits.</p>
<p>Close the window and open it again and check the result.</p>
</body>
</html>
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
ที่เก็บข้อมูลในเครื่อง
เก็บข้อมูลท้องถิ่นถูกออกแบบมาสำหรับการจัดเก็บข้อมูลที่ครอบคลุมหลายหน้าต่างและเวลาเกินเซสชันปัจจุบัน โดยเฉพาะอย่างยิ่งเว็บแอปพลิเคชันอาจต้องการจัดเก็บข้อมูลผู้ใช้เป็นเมกะไบต์เช่นเอกสารที่ผู้ใช้สร้างขึ้นทั้งหมดหรือกล่องจดหมายของผู้ใช้ในฝั่งไคลเอ็นต์ด้วยเหตุผลด้านประสิทธิภาพ
อีกครั้งคุกกี้ไม่สามารถจัดการกับกรณีนี้ได้ดีเนื่องจากมีการส่งคำขอทุกครั้ง
ตัวอย่าง
HTML5 แนะนำแอตทริบิวต์localStorageซึ่งจะใช้ในการเข้าถึงพื้นที่จัดเก็บข้อมูลภายในของเพจโดยไม่ จำกัด เวลาและพื้นที่จัดเก็บในตัวเครื่องนี้จะพร้อมใช้งานเมื่อใดก็ตามที่คุณจะใช้เพจนั้น
ต่อไปนี้เป็นรหัสที่จะตั้งค่าตัวแปรการจัดเก็บในเครื่องและเข้าถึงตัวแปรนั้นทุกครั้งที่เข้าถึงหน้านี้แม้ในครั้งต่อไปเมื่อคุณเปิดหน้าต่าง -
<!DOCTYPE HTML>
<html>
<body>
<script type = "text/javascript">
if( localStorage.hits ) {
localStorage.hits = Number(localStorage.hits) +1;
} else {
localStorage.hits = 1;
}
document.write("Total Hits :" + localStorage.hits );
</script>
<p>Refresh the page to increase number of hits.</p>
<p>Close the window and open it again and check the result.</p>
</body>
</html>
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
ลบที่เก็บข้อมูลบนเว็บ
การจัดเก็บข้อมูลที่ละเอียดอ่อนบนเครื่องในพื้นที่อาจเป็นอันตรายและอาจทำให้เกิดช่องโหว่ด้านความปลอดภัย
เซสชันการจัดเก็บข้อมูลจะถูกลบออกจากเบราว์เซอร์ได้ทันทีหลังจากที่เซสชั่นได้รับการยกเลิก
หากต้องการล้างการตั้งค่าการจัดเก็บในเครื่องคุณจะต้องโทร localStorage.remove('key'); โดยที่ 'คีย์' คือคีย์ของค่าที่คุณต้องการลบ หากต้องการล้างการตั้งค่าทั้งหมดคุณต้องโทรlocalStorage.clear() วิธี.
ต่อไปนี้เป็นรหัสที่จะล้างการจัดเก็บในเครื่องที่สมบูรณ์ -
<!DOCTYPE HTML>
<html>
<body>
<script type = "text/javascript">
localStorage.clear();
// Reset number of hits.
if( localStorage.hits ) {
localStorage.hits = Number(localStorage.hits) +1;
} else {
localStorage.hits = 1;
}
document.write("Total Hits :" + localStorage.hits );
</script>
<p>Refreshing the page would not to increase hit counter.</p>
<p>Close the window and open it again and check the result.</p>
</body>
</html>
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -