Lưu trữ cục bộ trong HTML5: Local Storage và Session Storage
02:00 ngày 11-09-2017
HTML5 cung cấp 2 phương thức lưu trữ mới ở phía giao diện người dùng đó là Local Storage và Session Storage. Chúng được gọi là HTML Local Storage.
- Local Storage: Dữ liệu được lưu trữ mãi mãi.
- Session Storage: Dữ liệu chỉ được lưu trữ và sử dụng cho một session của page. Việc mở trang web với new tab hoặc window, session mới sẽ được tạo ra.
Khác với Cookies, những thông tin này không được truyền đến Server. HTML Local Storage được lưu trữ dựa trên Origin (cùng protocol <http, https..>, domain và port). Nghĩa là những trang web với cùng Origin sẽ truy cập cùng HTML Local Storage.
Dữ liệu được lưu trữ dưới dạng key, value. Kiểu dữ liệu ở đây là string, vì vậy bạn cần convert đến dữ liệu bạn cần trước khi dùng. Các phương thức quan trọng:
- setItem(key, value) : lưu giá trị
- getItem(key) : Nhận giá trị
- removeItem(key) : Xóa phần tử
- clear() : Xóa tất cả các phần tử
Giờ hãy thử cách thức hoạt động của chúng. Trước tiên, copy đoạn mã sau vào file test1.html
<!DOCTYPE html>
<html>
<head>
<script>
function clickCount() {
if(typeof(Storage) !== "undefined") {
var storageObject = localStorage;
if (storageObject.clickcount) {
storageObject.clickcount = Number(storageObject.clickcount)+1;
} else {
storageObject.clickcount = 1;
}
document.getElementById("result").innerHTML = storageObject.clickcount + " time(s).";
} else {
document.getElementById("result").innerHTML = "Not support web storage...";
}
}
function inital() {
if(typeof(Storage) !== "undefined") {
var storageObject = localStorage;
if (storageObject.clickcount) {
storageObject.clickcount = Number(storageObject.clickcount);
} else {
storageObject.clickcount = 0;
}
document.getElementById("result").innerHTML = storageObject.clickcount + " time(s).";
} else {
document.getElementById("result").innerHTML = "Not support web storage...";
}
}
</script>
</head>
<body onload="inital()">
<p>HTML Local Storage Demo</p>
<p><button onclick="clickCount()" type="button">Click!</button></p>
<div id="result"></div>
</body>
</html>
Giờ chạy file này trên trình duyệt. Click trên button Click. Giá trị sẽ tăng lên. Hãy tắt và mở lại, lúc này số lần click vẫn tiếp tục hiển thị. Nếu chúng ta mở tiếp tab nữa thì giá trị hiển thị giống nhau. Đó là bởi vì Local Storage sẽ được lưu trữ mãi mãi (cho đến khi chúng ta xóa) và dựa trên Origin nên nếu chúng ta đóng trình duyệt và mở lại hay mở một tab mới thì thông tin lưu trữ vẫn còn và được dùng chung.
Bây giờ hãy thay đổi localStorage thành sessionStorage bằng cách sửa var storageObject = localStorage;
thành var storageObject = sessionStorage;
ở trong 2 hàm JavaScript. Hãy thử các trường hợp như đã thực hiện trước. Giá trị luôn luôn bằng không sau khi đóng trình duyệt và mở lại. Hãy thử mở thêm một tab sau khi click vài lần lên button. Lúc này giá trị hiện thị trên tab mới cũng bằng 0. Có cái gì đó không đúng ở đây, thông tin được sử dụng cho cùng Origin. Vậy tại sao cửa sổ mới vẫn bằng 0? Thực ra, Page Session chỉ được tính trên một tab.
A page session lasts for as long as the browser is open and survives over page reloads and restores. Opening a page in a new tab or window will cause a new session to be initiated, which differs from how session cookies work.
Chúng ta hãy thử copy file test1.html đến test2.html. Mở file test1.html, click trên button để thay đổi giá trị. Giờ hãy thay test1.html bằng test2.html trên thanh địa chỉ và enter ( mở test2.html trên tab hiện tại mở test1.html). Giá trị khi nảy vẫn còn ở đây. Nghĩa là test1.html và test2.html đang đọc cùng thông tin lưu trữ khi mở chúng trên cùng 1 tab.
Viết Phản Hồi
Chuyên Mục
- Android (0)
- C#, ASP.Net (4)
- C, C++ (0)
- HTML, CSS, JavaScript (5)
- Database (1)
- Linh Tinh (2)
Bài Viết Mới
- Kế thừa và từ khóa virtual trong c#
- Base64 và Cache Image trong LocalStorage
- PerformanceNavigation và cách thức truy cập Website (Page)
- SqlCommandBuilder với Insert, Update và Delete dữ liệu từ DataGridview đến Database
- Kết nối SQLite bằng Entity framework
- SQL SERVER: Sử dụng INDEX để tăng tốc độ thực thi câu truy vấn
- MachineKey là gì
- HTML5 Web Workers là gì
- Lưu trữ cục bộ trong HTML5: Local Storage và Session Storage
- Angular Tree
Phản Hồi Mới
-
Angular Tree
ad
-
Kế thừa và từ khóa virtual trong c#
ssd
-
Sử dụng chrome trong lập trình web
Thèn Khương nói tào lao quá
-
Angular Tree
content mà mè mmex nè ne
- Các định lý của đại số logic (Boolean) Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- Các định lý của đại số logic (Boolean) Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- Các định lý của đại số logic (Boolean) Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- Các định lý của đại số logic (Boolean) Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Phản Hồi