Search…

Tìm Hiểu về Window.localStorage

09/08/20203 min read
Tìm hiểu về localStorage trong HTML5 và cách sử dụng thông qua JavaScript code.

Để lưu trữ thông tin của người dùng tại trình duyệt web như lưu trữ điểm trong game, lưu trữ tạm các hiệu ứng, cookies là lựa chọn tốt để hiện thực, nhưng cookies có 1 số đặt điểm như sau:

  • Dung lượng tối đa 4KB.
  • Dữ liệu phải gửi qua lại giữa server và client khi phát sinh request.

Để chủ động hơn, HTML5 hiện thực một khái niệm mới là localStorage:

  • Hỗ trợ lưu trữ và sử dụng nó linh hoạt tại frontend.
  • Dung lượng của localStorage vào khoảng 2MB đến 10MB.
  • localStorage không liên hệ với server.
  • Muốn gửi thông tin này đến server ta có thể chủ động thông qua http request.

localStorage là gì?

localStorage là cách thức lưu trữ dữ liệu tại client độc lập với server. Giả định viết 1 ứng dụng web cho phép người dùng viết bài trên STDIO, để tránh người dùng chưa lưu trữ bài viết nhưng lại gặp sự cố về máy tính, ứng dụng tiến hành lưu trữ mỗi 5 phút 1 lần, khi gặp sự cố ở lần mở web sau sẽ kiểm tra trong localStorage có dữ liệu hay không, nếu có thì có thể hỏi người dùng có muốn khôi phục lại phiên bản làm việc trước đó không?

Để hiện thực tính năng lưu trữ tạm này, yêu cầu mỗi 5 phút dữ liệu tự lưu trữ lên server, nếu chỉ đòi hỏi lưu trữ tạm ở trình duyệt web, localStorage là lựa chọn tốt. Server sẽ giảm được lượng request đáng kể nhưng vẫn mang được trải nghiệm tốt cho người dùng. Ngoài ra, thời gian lưu trữ của localStorage có thể kéo dài cho đến khi frontend ra lệnh xóa.

Cách sử dụng localStorage

Kiểm tra trình duyệt có hỗ trợ localStorage hay không?

Để sử dụng localStorage, trình duyệt cần hỗ trợ HTML5 trở lên. Tại thời điểm này, các trình duyệt web hiện đại đã hỗ trợ tốt cho HTML5, tuy nhiên ta vẫn nên kiểm tra xem localStorage như 1 thói quen tốt vì có thể ở 1 yêu cầu nào đó từ khách hàng trên 1 số trình duyệt lạc hậu chưa hỗ trợ.

<!DOCTYPE html>
<html>
  <body>
    <script>
      if (localStorage) {
        alert("STDIO: Yes, localStorage is here!");
      } else {
        alert("STDIO: Your browser does not support localStorage!");
      }
    </script>
  </body>
</html>

Nếu trình duyệt có hỗ trợ thì thông báo sau sẽ hiện lên

localStorage

Lưu mới, thay đổi hoặc lấy dữ liệu từ localStorage

Lưu, thay đổi dữ liệu

localStorage.setItem(name, data)

Kiểm tra dữ liệu đã tồn tại hay chưa

localStorage.getItem(name) == null

Xóa dữ liệu

localStorage.removeItem(name)

Ví dụ

<!DOCTYPE html>
<html>
 <body>
   <script>
     if (localStorage) {
       // Save data to localStorage
       localStorage.setItem("Title", "Tìm Hiểu về Window.localStorage");
       localStorage.setItem("Content", "<p>Để lưu trữ thông tin ...");
       // Get data from localStorage
       console.log(localStorage.getItem("Content"));
       // Check if data stored in localStorage
       if (localStorage.getItem("Title") == null) {
         console.log("Title? Where is Title?");
       } // Remove data from localStorage
       localStorage.removeItem("Title");
       if (localStorage.getItem("Title") == null) {
         console.log("Deleted Title?");
       }
     }
   </script>
 </body>
</html>

Do dữ liệu được lưu tại trình duyệt web của người dùng, cần cẩn thận việc dữ liệu thay đổi có gây nguy hại cho hệ thống hoặc người dùng hay không?

  • Chỉ nên lưu trữ các giá trị liên quan đến xử lý giao diện như lựa chọn theme, trải nghiệm người dùng như lựa chọn ngôn ngữ.
  • Mật khẩu hay mã số bí mật không nên lưu trong localStorage hoặc chưa được mã hóa trước khi lưu.

Bài chung series

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024