Local Storage là gì? Hướng dẫn chi tiết từ A-Z cho người mới bắt đầu

Local Storage là gì

Khi xây dựng các ứng dụng web hiện đại, việc lưu trữ dữ liệu tạm thời trên trình duyệt của người dùng là một nhu cầu thiết yếu. Local Storage chính là một trong những giải pháp mạnh mẽ nhất được các nhà phát triển sử dụng hàng ngày. Đây là một cơ chế lưu trữ dữ liệu dưới dạng key-value ngay trên trình duyệt, cho phép các trang web ghi nhớ thông tin mà không cần gửi yêu cầu lên máy chủ. Khác với cookie, dữ liệu trong Local Storage không tự động gửi kèm mỗi request HTTP, giúp tiết kiệm băng thông và tăng tốc độ xử lý. Bài viết này sẽ giúp bạn hiểu rõ bản chất, cách hoạt động và ứng dụng thực tế của Local Storage trong phát triển web.

Local Storage là gì? Giải thích bản chất và cơ chế hoạt động

Local Storage là gì - Hình 5

Local Storage là một phần của Web Storage API, được giới thiệu trong HTML5, cho phép lưu trữ dữ liệu dưới dạng chuỗi (string) với cấu trúc key-value. Dữ liệu được lưu trữ vĩnh viễn trên trình duyệt cho đến khi người dùng xóa thủ công hoặc thông qua mã JavaScript. Mỗi domain có một không gian lưu trữ riêng biệt, dung lượng tối đa thường là 5MB trên hầu hết các trình duyệt hiện đại.

Xem thêm:  Autonomous System là gì? Toàn tập kiến thức về Hệ thống tự trị trong mạng Internet

Cơ chế hoạt động của Local Storage khá đơn giản. Khi bạn gọi phương thức localStorage.setItem(‘key’, ‘value’), trình duyệt sẽ lưu cặp dữ liệu này vào bộ nhớ cục bộ. Khi cần truy xuất, bạn dùng localStorage.getItem(‘key’). Dữ liệu được lưu dưới dạng chuỗi, vì vậy nếu muốn lưu object hoặc array, bạn cần sử dụng JSON.stringify() và JSON.parse() để chuyển đổi.

Phân biệt Local Storage với các cơ chế lưu trữ khác

Local Storage là gì - Hình 4

Local Storage và Session Storage

Cả Local Storage và Session Storage đều thuộc Web Storage API, nhưng có sự khác biệt quan trọng về vòng đời dữ liệu. Dữ liệu trong Local Storage tồn tại vĩnh viễn, trong khi Session Storage chỉ tồn tại trong phiên làm việc của tab trình duyệt. Khi đóng tab, toàn bộ dữ liệu Session Storage bị xóa sạch.

Local Storage và Cookie

Tiêu chí Local Storage Cookie
Dung lượng tối đa 5-10MB 4KB
Tự động gửi lên server Không Có (mỗi request HTTP)
Hỗ trợ dữ liệu phức tạp Có (qua JSON) Chỉ chuỗi đơn giản
Kiểm soát hết hạn Không tự động Có (Expires/Max-Age)
Bảo mật Không mã hóa Có thể mã hóa

Local Storage và IndexedDB

IndexedDB là một cơ sở dữ liệu NoSQL mạnh mẽ hơn, hỗ trợ lưu trữ cấu trúc dữ liệu phức tạp, index và transaction. Local Storage phù hợp với dữ liệu đơn giản, dung lượng nhỏ, trong khi IndexedDB dành cho ứng dụng cần lưu trữ lượng lớn dữ liệu có cấu trúc.

Lợi ích và hạn chế của Local Storage

Local Storage là gì - Hình 3

Lợi ích nổi bật

    • Dễ sử dụng: API đơn giản với các phương thức setItem, getItem, removeItem, clear. Chỉ vài dòng code là có thể triển khai.
    • Dung lượng lớn: 5MB cho mỗi domain, đủ cho hầu hết nhu cầu lưu trữ thông tin người dùng, cài đặt, trạng thái ứng dụng.
    • Không ảnh hưởng hiệu suất mạng: Dữ liệu không tự động gửi lên server như cookie, giảm tải băng thông.
    • Đồng bộ: Hoạt động đồng bộ, dễ dàng đọc và ghi dữ liệu mà không cần callback hay promise.
    • Hỗ trợ rộng rãi: Tất cả trình duyệt hiện đại đều hỗ trợ, bao gồm Chrome, Firefox, Safari, Edge.

    Hạn chế cần biết

    • Chỉ lưu chuỗi: Mọi dữ liệu phải được chuyển đổi thành chuỗi, gây bất tiện khi làm việc với object phức tạp.
    • Không bảo mật: Dữ liệu lưu dưới dạng plain text, dễ bị đọc bởi JavaScript độc hại thông qua XSS.
    • Không hỗ trợ transaction: Không có cơ chế rollback nếu quá trình ghi thất bại.
    • Giới hạn dung lượng: 5MB có thể không đủ cho ứng dụng cần lưu nhiều dữ liệu offline.
    • Chỉ hoạt động trên client: Không thể truy cập từ server-side code.

    Hướng dẫn sử dụng Local Storage chi tiết

    Local Storage là gì - Hình 2

    Các phương thức cơ bản

    Để bắt đầu sử dụng Local Storage, bạn chỉ cần truy cập đối tượng localStorage có sẵn trong trình duyệt. setItem(‘username’, ‘nguyenvanA’)

  • Đọc dữ liệu: let user = localStorage.getItem(‘username’)
  • Xóa một key: localStorage.removeItem(‘username’)
  • Xóa toàn bộ: localStorage.clear()
  • Kiểm tra số lượng: localStorage.length
  • Lấy key theo index: localStorage.key(0)

Lưu trữ dữ liệu phức tạp với JSON

Vì Local Storage chỉ chấp nhận chuỗi, bạn cần chuyển đổi object hoặc array trước khi lưu:

Khi lưu: sử dụng JSON.stringify() để chuyển object thành chuỗi JSON. Khi đọc: sử dụng JSON.parse() để chuyển chuỗi JSON trở lại object. Ví dụ lưu thông tin giỏ hàng gồm nhiều sản phẩm, mỗi sản phẩm có id, tên, số lượng, giá tiền.

Kiểm tra hỗ trợ trình duyệt

Trước khi sử dụng, bạn nên kiểm tra trình duyệt có hỗ trợ Local Storage hay không. Cách đơn giản nhất là kiểm tra sự tồn tại của đối tượng localStorage trong window. Nếu không có,

Local Storage không được thiết kế để lưu trữ dữ liệu nhạy cảm. Dữ liệu được lưu dưới dạng plain text và có thể bị đọc bởi bất kỳ JavaScript nào chạy trên cùng domain. Để bảo vệ dữ liệu quan trọng, hãy sử dụng HttpOnly cookie hoặc mã hóa dữ liệu trước khi lưu.

Dung lượng tối đa của Local Storage là bao nhiêu?

Hầu hết các trình duyệt hiện đại đều hỗ trợ 5MB cho mỗi domain. Tuy nhiên, một số trình duyệt như Chrome có thể cho phép lên đến 10MB tùy thuộc vào cấu hình. Khi vượt quá giới hạn, trình duyệt sẽ ném ra lỗi QuotaExceededError.

Local Storage có tự động xóa không?

Không, dữ liệu trong Local Storage tồn tại vĩnh viễn cho đến khi người dùng xóa thủ công thông qua cài đặt trình duyệt hoặc nhà phát triển xóa bằng code. Không có cơ chế tự động hết hạn như cookie.

Làm thế nào để xóa toàn bộ Local Storage?

Có, Local Storage vẫn hoạt động ở chế độ ẩn danh. Tuy nhiên, dữ liệu sẽ bị xóa khi người dùng đóng tất cả các tab ẩn danh. Mỗi phiên ẩn danh có không gian lưu trữ riêng biệt.

Sự khác biệt giữa Local Storage và Session Storage là gì?

Local Storage lưu dữ liệu vĩnh viễn, trong khi Session Storage chỉ lưu trong phiên làm việc của tab. Khi đóng tab, Session Storage bị xóa. Cả hai đều có API tương tự nhau và dung lượng 5MB.

Kết luận

Local Storage là gì - Hình 1

Local Storage là một công cụ mạnh mẽ và dễ sử dụng trong phát triển web hiện đại. Với khả năng lưu trữ lên đến 5MB dữ liệu trên trình duyệt, nó giải quyết hiệu quả các bài toán về lưu trạng thái người dùng, cache dữ liệu tạm thời và cải thiện trải nghiệm offline. Tuy nhiên, nhà phát triển cần hiểu rõ giới hạn và rủi ro bảo mật để sử dụng đúng cách. Không lưu thông tin nhạy cảm, luôn xử lý lỗi khi đầy bộ nhớ và kết hợp với các cơ chế lưu trữ khác khi cần thiết. Với kiến thức nền tảng vững chắc về Local Storage, bạn có thể xây dựng những ứng dụng web mượt mà, thông minh và thân thiện với người dùng hơn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *