API lưu trữ web HTML
lưu trữ web HTML; tốt hơn cookie.
Lưu trữ web HTML là gì?
Với bộ nhớ web, các ứng dụng web có thể lưu trữ dữ liệu cục bộ trong trình duyệt của người dùng.
Trước HTML5, dữ liệu ứng dụng phải được lưu trữ trong cookie, có trong mọi yêu cầu của máy chủ. Lưu trữ web an toàn hơn và lượng lớn dữ liệu có thể được lưu trữ cục bộ mà không ảnh hưởng đến hiệu suất trang web.
Không giống như cookie, giới hạn lưu trữ lớn hơn nhiều (ít nhất là 5 MB) và thông tin không bao giờ được chuyển đến máy chủ.
Dung lượng lưu trữ trên web được tính theo nguồn gốc (theo tên miền và giao thức). Tất cả các trang, từ một nguồn, có thể lưu trữ và truy cập cùng một dữ liệu.
Hỗ trợ trình duyệt
Các số trong bảng chỉ định phiên bản trình duyệt đầu tiên hỗ trợ đầy đủ Web Storage.
API | |||||
---|---|---|---|---|---|
Web Storage | 4.0 | 8.0 | 3.5 | 4.0 | 11.5 |
Đối tượng lưu trữ web HTML
Bộ lưu trữ web HTML cung cấp hai đối tượng để lưu trữ dữ liệu trên máy khách:
-
window.localStorage
- lưu trữ dữ liệu không có ngày hết hạn -
window.sessionStorage
- lưu trữ dữ liệu trong một phiên (dữ liệu sẽ bị mất khi đóng tab trình duyệt)
Trước khi sử dụng bộ nhớ web, hãy kiểm tra hỗ trợ trình duyệt cho localStorage và sessionStorage:
if (typeof(Storage) !== "undefined") {
// Code for localStorage/sessionStorage.
}
else {
// Sorry! No Web Storage support..
}
Đối tượng lưu trữ cục bộ
Đối tượng localStorage lưu trữ dữ liệu không có ngày hết hạn. Dữ liệu sẽ không bị xóa khi đóng trình duyệt và sẽ có sẵn vào ngày, tuần hoặc năm tiếp theo.
Ví dụ
// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");
Hãy tự mình thử »Ví dụ giải thích:
- Tạo một cặp tên/giá trị localStorage với name="lastname" và value="Smith"
- Truy xuất giá trị của "lastname" và chèn nó vào phần tử có id="result"
Ví dụ trên cũng có thể được viết như thế này:
// Store
localStorage.lastname = "Smith";
// Retrieve
document.getElementById("result").innerHTML = localStorage.lastname;
Cú pháp để xóa mục localStorage "họ" như sau:
localStorage.removeItem("lastname");
Lưu ý: Cặp tên/giá trị luôn được lưu dưới dạng chuỗi. Hãy nhớ chuyển đổi chúng sang định dạng khác khi cần thiết!
Ví dụ sau đếm số lần người dùng đã nhấp vào nút. Trong mã này, chuỗi giá trị được chuyển đổi thành số để có thể tăng bộ đếm:
Ví dụ
if (localStorage.clickcount) {
localStorage.clickcount = Number(localStorage.clickcount) + 1;
} else {
localStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "You have clicked the button " +
localStorage.clickcount + " time(s).";
Hãy tự mình thử »Đối tượng sessionStorage
Đối tượng sessionStorage
tương đương với đối tượng localStorage, ngoại trừ việc nó chỉ lưu trữ dữ liệu cho một phiên. Dữ liệu sẽ bị xóa khi người dùng đóng tab trình duyệt cụ thể.
Ví dụ sau đếm số lần người dùng đã nhấp vào nút trong phiên hiện tại:
Ví dụ
if (sessionStorage.clickcount) {
sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1;
}
else {
sessionStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "You have clicked the button " +
sessionStorage.clickcount + " time(s) in this session.";
Hãy tự mình thử »