Bạn đang tìm hiểu về cách lưu trữ dữ liệu trực tiếp trên trình duyệt web? Local Storage chính là giải pháp đơn giản, hiệu quả và mạnh mẽ. Bài viết này của WiWeb sẽ giúp bạn hiểu rõ Local Storage là gì, cách thức hoạt động, ưu nhược điểm, và đặc biệt là cách sử dụng nó trong dự án web của bạn. So sánh với Session Storage và Cookies, bạn sẽ biết khi nào nên dùng Local Storage để tối ưu hiệu suất và trải nghiệm người dùng. Hãy cùng khám phá sức mạnh của Web Storage API và cách nó có thể thay đổi cách bạn xây dựng ứng dụng web.
Local Storage là gì? Giới thiệu về Local Storage
Bạn có bao giờ tự hỏi, làm thế nào các trang web có thể ghi nhớ thông tin của bạn, ngay cả khi bạn đã đóng trình duyệt và mở lại? Bí mật nằm ở Local Storage.
Local Storage là một tính năng của Web Storage API, cho phép các trang web lưu trữ dữ liệu trực tiếp trên trình duyệt của người dùng. Dữ liệu này được lưu trữ dưới dạng key-value pairs, tương tự như một bảng dữ liệu đơn giản. Điều quan trọng là dữ liệu này sẽ tồn tại vĩnh viễn (cho đến khi người dùng chủ động xóa nó), ngay cả khi bạn đóng trình duyệt, tắt máy tính hoặc mở lại trình duyệt vào ngày hôm sau.
So với các phương pháp lưu trữ truyền thống như Cookies, Local Storage có nhiều ưu điểm vượt trội. Dung lượng lưu trữ lớn hơn (khoảng 5MB so với 4KB của cookies), và dữ liệu không bị gửi kèm mỗi khi trình duyệt gửi yêu cầu đến server, giúp tăng tốc độ tải trang và giảm băng thông.
Local Storage mở ra nhiều khả năng cho các nhà phát triển web. Bạn có thể sử dụng nó để lưu trữ thông tin người dùng, cài đặt ứng dụng, trạng thái đăng nhập, dữ liệu offline, và nhiều hơn nữa. Với Local Storage, bạn có thể tạo ra những trải nghiệm web mượt mà, cá nhân hóa và tiện lợi hơn cho người dùng.
WiWeb tin rằng Local Storage là một công cụ không thể thiếu cho bất kỳ nhà phát triển web hiện đại nào. Hãy cùng tìm hiểu sâu hơn về cách Local Storage hoạt động trong các phần tiếp theo.

Local Storage hoạt động như thế nào?
Để hiểu rõ hơn về Local Storage, chúng ta hãy cùng khám phá cách nó hoạt động ở cấp độ kỹ thuật.
Khi một trang web sử dụng Local Storage, trình duyệt sẽ tạo ra một khu vực lưu trữ riêng biệt cho trang web đó. Khu vực này được xác định bởi origin của trang web (bao gồm giao thức, tên miền và cổng). Điều này có nghĩa là mỗi trang web sẽ chỉ có thể truy cập vào dữ liệu được lưu trữ trong khu vực của chính mình, đảm bảo tính bảo mật và riêng tư.
Dữ liệu trong Local Storage được lưu trữ dưới dạng chuỗi (string). Điều này có nghĩa là nếu bạn muốn lưu trữ các kiểu dữ liệu khác như số, boolean, hoặc object, bạn cần phải chuyển đổi chúng thành chuỗi trước khi lưu, và chuyển đổi ngược lại khi lấy dữ liệu ra. JavaScript cung cấp các hàm JSON.stringify() và JSON.parse() để giúp bạn thực hiện việc này một cách dễ dàng.
Khi bạn gọi các phương thức của Local Storage (chúng ta sẽ tìm hiểu về các phương thức này ở phần sau), trình duyệt sẽ thực hiện các thao tác đọc, ghi, xóa dữ liệu trong khu vực lưu trữ tương ứng. Các thao tác này diễn ra hoàn toàn ở phía client (trình duyệt), không cần kết nối internet, giúp tăng tốc độ và giảm tải cho server.
Một điều quan trọng cần lưu ý là Local Storage là đồng bộ. Điều này có nghĩa là khi bạn thực hiện một thao tác với Local Storage, trình duyệt sẽ tạm dừng việc thực thi các đoạn mã JavaScript khác cho đến khi thao tác đó hoàn tất. Vì vậy, nếu bạn lưu trữ một lượng lớn dữ liệu, có thể gây ra tình trạng giật lag cho trang web. Trong trường hợp đó, bạn có thể cân nhắc sử dụng IndexedDB, một giải pháp lưu trữ bất đồng bộ và mạnh mẽ hơn.
WiWeb hy vọng phần giải thích này giúp bạn hiểu rõ hơn về cách Local Storage hoạt động. Hãy cùng tìm hiểu về những ưu điểm mà nó mang lại trong phần tiếp theo.

Ưu điểm của Local Storage
Tại sao Local Storage lại trở nên phổ biến và được ưa chuộng bởi các nhà phát triển web? Câu trả lời nằm ở những ưu điểm vượt trội mà nó mang lại:
- Dung lượng lưu trữ lớn: Như đã đề cập ở trên, Local Storage cung cấp dung lượng lưu trữ lớn hơn nhiều so với Cookies (khoảng 5MB so với 4KB). Điều này cho phép bạn lưu trữ nhiều dữ liệu hơn, từ thông tin người dùng, cài đặt ứng dụng, đến dữ liệu offline.
- Dữ liệu tồn tại vĩnh viễn: Dữ liệu trong Local Storage sẽ tồn tại cho đến khi người dùng chủ động xóa nó, hoặc trang web xóa nó thông qua code. Điều này rất hữu ích cho việc lưu trữ các thông tin không thay đổi thường xuyên, như cài đặt ứng dụng, trạng thái đăng nhập, hoặc dữ liệu cá nhân hóa.
- Hiệu suất cao: Dữ liệu trong Local Storage được lưu trữ trực tiếp trên trình duyệt của người dùng, không cần gửi kèm mỗi khi trình duyệt gửi yêu cầu đến server. Điều này giúp tăng tốc độ tải trang và giảm băng thông, đặc biệt là đối với các trang web có nhiều nội dung tĩnh.
- Đơn giản và dễ sử dụng: Local Storage cung cấp một API đơn giản và dễ sử dụng, với chỉ vài phương thức cơ bản để đọc, ghi, xóa dữ liệu. Ngay cả những người mới bắt đầu học lập trình web cũng có thể nhanh chóng làm quen và sử dụng Local Storage một cách hiệu quả.
- Bảo mật: Dữ liệu trong Local Storage chỉ có thể được truy cập bởi trang web đã tạo ra nó, đảm bảo tính bảo mật và riêng tư. Tuy nhiên, bạn vẫn cần cẩn thận để tránh lưu trữ các thông tin nhạy cảm như mật khẩu hoặc thông tin tài chính trong Local Storage.
WiWeb tin rằng những ưu điểm này khiến Local Storage trở thành một lựa chọn tuyệt vời cho nhiều ứng dụng web. Tuy nhiên, cũng cần lưu ý đến những nhược điểm của nó, mà chúng ta sẽ thảo luận trong phần tiếp theo.

Nhược điểm của Local Storage
Mặc dù Local Storage có nhiều ưu điểm, nhưng nó cũng có một số nhược điểm mà bạn cần cân nhắc trước khi sử dụng:
- Chỉ lưu trữ được chuỗi: Như đã đề cập, Local Storage chỉ có thể lưu trữ dữ liệu dưới dạng chuỗi. Điều này có nghĩa là bạn cần phải chuyển đổi các kiểu dữ liệu khác thành chuỗi trước khi lưu, và chuyển đổi ngược lại khi lấy dữ liệu ra. Việc này có thể tốn thời gian và công sức, đặc biệt là khi làm việc với các cấu trúc dữ liệu phức tạp.
- Đồng bộ: Các thao tác với Local Storage là đồng bộ, có thể gây ra tình trạng giật lag cho trang web nếu bạn lưu trữ một lượng lớn dữ liệu. Điều này đặc biệt quan trọng đối với các ứng dụng web yêu cầu hiệu suất cao.
- Không an toàn cho dữ liệu nhạy cảm: Mặc dù dữ liệu trong Local Storage chỉ có thể được truy cập bởi trang web đã tạo ra nó, nhưng nó vẫn có thể bị đánh cắp nếu trang web của bạn bị tấn công XSS (Cross-Site Scripting). Vì vậy, bạn không nên lưu trữ các thông tin nhạy cảm như mật khẩu hoặc thông tin tài chính trong Local Storage.
- Không hỗ trợ hết các trình duyệt: Mặc dù Local Storage được hỗ trợ bởi hầu hết các trình duyệt hiện đại, nhưng vẫn có một số trình duyệt cũ không hỗ trợ tính năng này. Bạn cần kiểm tra khả năng tương thích của trình duyệt trước khi sử dụng Local Storage trong dự án của mình. Bạn có thể tham khảo CanIUse để kiểm tra khả năng tương thích của Local Storage.
- Không có cơ chế hết hạn: Dữ liệu trong Local Storage sẽ tồn tại vĩnh viễn cho đến khi người dùng chủ động xóa nó. Điều này có thể gây ra vấn đề nếu bạn muốn lưu trữ dữ liệu tạm thời hoặc dữ liệu có thời hạn sử dụng.
WiWeb khuyên bạn nên cân nhắc kỹ lưỡng những nhược điểm này trước khi quyết định sử dụng Local Storage. Hãy chọn giải pháp lưu trữ phù hợp nhất với yêu cầu và đặc điểm của dự án của bạn.

Cách sử dụng Local Storage (Ví dụ với JavaScript)
Bây giờ, chúng ta sẽ đi vào phần thực hành và tìm hiểu cách sử dụng Local Storage trong JavaScript.
Để sử dụng Local Storage, bạn có thể truy cập vào đối tượng localStorage
của window. Đối tượng này cung cấp các phương thức để đọc, ghi, xóa dữ liệu.
Ví dụ:
- Lưu trữ dữ liệu:
// Lưu trữ một chuỗi localStorage.setItem('username', 'WiWeb'); // Lưu trữ một số localStorage.setItem('age', 30); // Lưu trữ một object (cần chuyển đổi thành chuỗi JSON) const user = { name: 'WiWeb', age: 30 }; localStorage.setItem('user', JSON.stringify(user));
- Lấy dữ liệu:
// Lấy một chuỗi const username = localStorage.getItem('username'); console.log(username); // Output: WiWeb // Lấy một số (cần chuyển đổi thành số) const age = localStorage.getItem('age'); console.log(parseInt(age)); // Output: 30 // Lấy một object (cần chuyển đổi từ chuỗi JSON) const userString = localStorage.getItem('user'); const user = JSON.parse(userString); console.log(user.name); // Output: WiWeb
- Xóa dữ liệu:
// Xóa một item localStorage.removeItem('username'); // Xóa tất cả các item localStorage.clear();
Lưu ý:
- Tất cả các key và value trong Local Storage đều là chuỗi.
- Bạn cần sử dụng
JSON.stringify()
để chuyển đổi object thành chuỗi JSON trước khi lưu, vàJSON.parse()
để chuyển đổi chuỗi JSON thành object sau khi lấy ra.
WiWeb hy vọng ví dụ này giúp bạn hiểu rõ hơn về cách sử dụng Local Storage trong JavaScript. Hãy thử thực hành và khám phá thêm các ứng dụng khác của nó.

Các phương thức của Local Storage
Local Storage cung cấp một số phương thức đơn giản và dễ sử dụng để quản lý dữ liệu. Dưới đây là danh sách các phương thức chính:
setItem(key, value)
: Lưu trữ một cặp key-value vào Local Storage. Cả key và value đều phải là chuỗi.getItem(key)
: Lấy giá trị của một key từ Local Storage. Trả vềnull
nếu key không tồn tại.removeItem(key)
: Xóa một key khỏi Local Storage.clear()
: Xóa tất cả các key-value khỏi Local Storage.key(index)
: Lấy key tại vị trí index trong Local Storage. Index bắt đầu từ 0.length
: Trả về số lượng key-value trong Local Storage.
Ví dụ:
// Lưu trữ dữ liệu
localStorage.setItem('name', 'WiWeb');
localStorage.setItem('age', '30');
// Lấy số lượng item
console.log(localStorage.length); // Output: 2
// Lấy key tại vị trí 0
console.log(localStorage.key(0)); // Output: name
// Xóa item 'age'
localStorage.removeItem('age');
// Xóa tất cả item
localStorage.clear();
Lưu ý:
- Bạn có thể sử dụng các phương thức này trực tiếp trên đối tượng
localStorage
của window. - Các phương thức này là đồng bộ, có thể gây ra tình trạng giật lag nếu bạn thao tác với một lượng lớn dữ liệu.
WiWeb tin rằng việc nắm vững các phương thức này sẽ giúp bạn sử dụng Local Storage một cách hiệu quả và linh hoạt trong các dự án web của mình.

So sánh Local Storage với Session Storage và Cookies
Để hiểu rõ hơn về Local Storage, chúng ta hãy so sánh nó với hai phương pháp lưu trữ dữ liệu khác trên trình duyệt: Session Storage và Cookies.
Tính năng | Local Storage | Session Storage | Cookies |
Dung lượng | Khoảng 5MB | Khoảng 5MB | Khoảng 4KB |
Thời gian tồn tại | Vĩnh viễn (cho đến khi bị xóa) | Cho đến khi đóng tab/trình duyệt | Tùy chọn (có thể hết hạn hoặc tồn tại vĩnh viễn) |
Phạm vi truy cập | Cùng origin | Cùng origin, trong cùng tab/window | Cùng domain (có thể chia sẻ giữa các subdomain) |
Gửi kèm request | Không | Không | Có (gửi kèm mỗi khi trình duyệt gửi request đến server) |
Bảo mật | Có thể bị tấn công XSS | Có thể bị tấn công XSS | Có thể bị tấn công XSS, CSRF |
Mục đích sử dụng | Lưu trữ dữ liệu lâu dài, cài đặt ứng dụng, dữ liệu offline | Lưu trữ dữ liệu tạm thời, trạng thái phiên làm việc | Lưu trữ thông tin theo dõi người dùng, thông tin đăng nhập, cài đặt người dùng, giỏ hàng, và nhiều hơn nữa |
Session Storage tương tự như Local Storage, nhưng dữ liệu chỉ tồn tại trong một phiên làm việc. Khi bạn đóng tab hoặc trình duyệt, dữ liệu trong Session Storage sẽ bị xóa. Session Storage thường được sử dụng để lưu trữ thông tin tạm thời, như trạng thái đăng nhập, thông tin giỏ hàng (trong một phiên làm việc), hoặc dữ liệu nhập liệu trong một form.
Cookies là một phương pháp lưu trữ dữ liệu truyền thống hơn. Dữ liệu trong Cookies có thể được lưu trữ ở cả phía client (trình duyệt) và phía server. Cookies có thể được sử dụng để lưu trữ thông tin theo dõi người dùng, thông tin đăng nhập, cài đặt người dùng, giỏ hàng, và nhiều hơn nữa. Tuy nhiên, Cookies có dung lượng lưu trữ nhỏ hơn nhiều so với Local Storage và Session Storage, và dữ liệu bị gửi kèm mỗi khi trình duyệt gửi yêu cầu đến server, có thể làm chậm tốc độ tải trang.
WiWeb hy vọng bảng so sánh này giúp bạn hiểu rõ hơn về sự khác biệt giữa Local Storage, Session Storage và Cookies, và lựa chọn phương pháp lưu trữ phù hợp nhất với yêu cầu của dự án của bạn.

Khi nào nên sử dụng Local Storage?
Local Storage là một công cụ mạnh mẽ, nhưng không phải lúc nào cũng là lựa chọn tốt nhất. Dưới đây là một số trường hợp bạn nên sử dụng Local Storage:
- Lưu trữ cài đặt ứng dụng: Nếu ứng dụng web của bạn có các cài đặt mà người dùng có thể tùy chỉnh, bạn có thể sử dụng Local Storage để lưu trữ các cài đặt này. Khi người dùng quay lại ứng dụng, các cài đặt sẽ được tự động khôi phục, mang lại trải nghiệm người dùng mượt mà và cá nhân hóa.
- Lưu trữ dữ liệu offline: Nếu ứng dụng web của bạn cần hoạt động offline, bạn có thể sử dụng Local Storage để lưu trữ dữ liệu cần thiết. Khi người dùng mất kết nối internet, ứng dụng vẫn có thể truy cập và hiển thị dữ liệu từ Local Storage.
- Lưu trữ thông tin người dùng: Bạn có thể sử dụng Local Storage để lưu trữ thông tin người dùng như tên, email, ảnh đại diện, hoặc các thông tin cá nhân khác. Tuy nhiên, bạn cần cẩn thận để không lưu trữ các thông tin nhạy cảm như mật khẩu hoặc thông tin tài chính.
- Lưu trữ trạng thái đăng nhập: Bạn có thể sử dụng Local Storage để lưu trữ trạng thái đăng nhập của người dùng. Khi người dùng đóng trình duyệt và mở lại, họ sẽ vẫn ở trạng thái đăng nhập, giúp tiết kiệm thời gian và công sức.
- Lưu trữ dữ liệu game: Nếu bạn đang phát triển một game web, bạn có thể sử dụng Local Storage để lưu trữ điểm số, cấp độ, hoặc các thông tin khác của người chơi. Điều này giúp người chơi có thể tiếp tục chơi từ nơi họ đã dừng lại, ngay cả khi họ đóng trình duyệt.
WiWeb tin rằng Local Storage là một lựa chọn tuyệt vời cho các trường hợp này. Tuy nhiên, cũng cần lưu ý đến những trường hợp không nên sử dụng Local Storage, mà chúng ta sẽ thảo luận trong phần tiếp theo.

Các trường hợp không nên sử dụng Local Storage
Mặc dù Local Storage hữu ích trong nhiều tình huống, nhưng có những trường hợp bạn nên tránh sử dụng nó:
- Lưu trữ dữ liệu nhạy cảm: Không bao giờ lưu trữ thông tin nhạy cảm như mật khẩu, thông tin thẻ tín dụng, số an sinh xã hội, hoặc bất kỳ thông tin cá nhân quan trọng nào khác trong Local Storage. Dữ liệu trong Local Storage không được mã hóa và có thể bị đánh cắp thông qua các cuộc tấn công XSS (Cross-Site Scripting). Thay vào đó, hãy sử dụng các phương pháp lưu trữ an toàn hơn ở phía server.
- Lưu trữ dữ liệu lớn: Mặc dù Local Storage có dung lượng lưu trữ lớn hơn Cookies, nhưng nó vẫn có giới hạn (khoảng 5MB). Nếu bạn cần lưu trữ một lượng lớn dữ liệu, hãy cân nhắc sử dụng IndexedDB, một giải pháp lưu trữ mạnh mẽ hơn và bất đồng bộ.
- Lưu trữ dữ liệu tạm thời: Nếu bạn chỉ cần lưu trữ dữ liệu trong một phiên làm việc, hãy sử dụng Session Storage thay vì Local Storage. Dữ liệu trong Session Storage sẽ tự động bị xóa khi người dùng đóng tab hoặc trình duyệt, giúp bạn tránh lãng phí dung lượng lưu trữ và đảm bảo tính bảo mật.
- Lưu trữ dữ liệu cần chia sẻ giữa các domain: Local Storage chỉ có thể được truy cập bởi trang web đã tạo ra nó. Nếu bạn cần chia sẻ dữ liệu giữa các domain khác nhau, hãy sử dụng Cookies hoặc các phương pháp chia sẻ dữ liệu khác ở phía server.
- Lưu trữ dữ liệu cần hỗ trợ các trình duyệt cũ: Mặc dù Local Storage được hỗ trợ bởi hầu hết các trình duyệt hiện đại, nhưng vẫn có một số trình duyệt cũ không hỗ trợ tính năng này. Nếu bạn cần hỗ trợ các trình duyệt cũ, hãy sử dụng Cookies hoặc các phương pháp lưu trữ khác tương thích với các trình duyệt đó.
WiWeb hy vọng bạn sẽ ghi nhớ những trường hợp này và sử dụng Local Storage một cách hợp lý và hiệu quả.
