Lưu trữ phiên so với Lưu trữ cục bộ: Sự khác biệt là gì?
Phiên và lưu trữ cục bộ là các phương pháp lưu trữ của trình duyệt cho phép bạn lưu trữ dữ liệu cùng với các yêu cầu HTTP không trạng thái. Chúng là một giải pháp thay thế cho lưu trữ dựa trên cookie và có nhiều công dụng trong việc phát triển web.
Mặc dù chúng hoạt động theo cách rất giống nhau, nhưng có những khác biệt đáng kể mà bạn nên biết.
Mục Lục
Lưu trữ cục bộ và lưu trữ phiên: Công dụng của chúng là gì?
Bộ nhớ cục bộ và phiên là các API JavaScript mà bạn có thể sử dụng để lưu trữ dữ liệu ở phía máy khách. Chúng cho phép một trang web lưu trữ dữ liệu trên trình duyệt và hướng dẫn trình duyệt truy cập vào nó sau này.
Tùy thuộc vào nhu cầu của bạn, bạn có thể sử dụng lưu trữ cục bộ hoặc phiên để lưu trữ dữ liệu. Cả hai phương pháp lưu trữ đều tương tự như cookie nhưng không có cùng mối quan tâm về quyền riêng tư xung quanh cookie. Do đó, hầu hết các trang web hiện đại chỉ thích sử dụng các phương pháp lưu trữ web hoặc kết hợp chúng với cookie như một phương pháp dự phòng.
Không giống như cookie, lưu trữ cục bộ và lưu trữ phiên không gửi dữ liệu đến máy chủ thông qua tiêu đề HTTP. Bạn chỉ nên sử dụng chúng cho chức năng phía máy khách.
Ngoài ra, bộ nhớ cục bộ và bộ nhớ phiên có giới hạn lưu trữ khoảng 5 MB cho mỗi miền. Chúng cung cấp nhiều dung lượng lưu trữ hơn cookie, chỉ có dung lượng 4 KiB cho mỗi cookie.
Lưu trữ phiên là gì?
Phiên duyệt web ước tính việc bạn sử dụng một trang web. Nếu bạn truy cập một trang web, duyệt xung quanh một chút, sau đó tắt máy tính của bạn, bạn có thể coi thời gian đó như một phiên duy nhất. Cấu hình trình duyệt của bạn có thể thay đổi điều này theo những cách tinh tế, nhưng một phiên nhằm thể hiện khoảng thời gian bạn tương tác với một trang web.
Lưu trữ phiên là duy nhất cho mỗi tab trình duyệt. Nếu bạn mở một tab mới và điều hướng đến cùng một trang web, bạn sẽ bắt đầu một phiên mới với bộ nhớ của riêng nó. Tuy nhiên, nếu bạn sử dụng tính năng “tab trùng lặp” trong trình duyệt của mình, tính năng đó có thể sử dụng lại cùng một phiên. Bạn không thể dựa quá nhiều vào các chi tiết cụ thể của một “phiên”. Thay vào đó, hãy tập trung vào khái niệm cốt lõi: lưu trữ phiên là tạm thời.
Lưu trữ phiên có các phương thức API tích hợp để làm việc với dữ liệu cặp khóa / giá trị. Bạn có thể lưu trữ dữ liệu từ JavaScript như sau:
sessionStorage.setItem("key", "value");
Và để truy xuất giá trị được lưu trữ:
sessionStorage.getItem("key");
Lưu ý rằng cả hai Chìa khóa và giá trị chỉ là các loại chuỗi. Nếu bạn muốn lưu trữ một kiểu khác, bạn sẽ cần chuyển đổi nó thành một chuỗi, rõ ràng hoặc ẩn ý.
Bộ nhớ cục bộ là gì?
Bộ nhớ cục bộ duy trì dữ liệu trên tất cả các phiên bản của một trang web, cho dù chúng nằm trong các tab hoặc cửa sổ khác nhau. Nó cũng là vĩnh viễn, vì vậy dữ liệu sẽ không biến mất khi bạn đóng trình duyệt của mình.
Khi bạn mở một trang web đã sử dụng bộ nhớ cục bộ trước đây, nó sẽ luôn có quyền truy cập vào dữ liệu được lưu trữ đó.
Là nhà phát triển web, bạn có thể sử dụng cơ chế này để lưu giữ dữ liệu về người dùng. Một số trang web có thể sử dụng điều này để giúp bạn luôn đăng nhập hoặc cung cấp trải nghiệm được cá nhân hóa hơn.
Giống như lưu trữ phiên, bạn có thể đặt đối tượng lưu trữ cục bộ bằng một dòng mã JavaScript:
localStorage.setItem("key", "value");
Để truy cập giá trị của khóa:
localStorage.getItem("key");
Lưu ý rằng các phương pháp này hoạt động giống như cách lưu trữ phiên, chúng chỉ sử dụng một kiểu lưu trữ dữ liệu khác.
Trong khi bộ nhớ phiên xóa dữ liệu ngay sau khi phiên kết thúc, cách duy nhất để xóa bộ nhớ cục bộ là xóa nó một cách rõ ràng. Cả hai loại lưu trữ đều cung cấp hai phương pháp để xóa dữ liệu. Đầu tiên xóa một mục dữ liệu cụ thể dựa trên khóa của nó:
localStorage.removeItem("key");
Bạn cũng có thể xóa tất cả dữ liệu được lưu trữ bởi trang web của mình, bất kể khóa của nó là gì:
localStorage.clear();
Bạn có thể tìm hiểu thêm về các phương pháp API lưu trữ web này trên trang web javascript.info.
Khi nào bạn cần bộ nhớ cục bộ?
Vì bộ nhớ cục bộ là liên tục, tốt nhất bạn nên giữ lại dữ liệu qua các lượt truy cập của người dùng. Nếu bạn muốn lưu trữ các tùy chọn trang web hoặc lưu trữ dữ liệu lâu dài trong bộ nhớ cache, thì bộ nhớ cục bộ là thích hợp. Bạn có thể không muốn lưu trữ dữ liệu nhạy cảm hơn bằng cách sử dụng bộ nhớ cục bộ, vì nó là vĩnh viễn.
Vì lưu trữ cục bộ và phiên là các phương thức giao diện người dùng, bạn có thể muốn tránh sử dụng chúng cho các chức năng dựa trên máy chủ như đăng nhập người dùng. Bạn có thể coi cookie như một giải pháp thay thế trong những trường hợp này.
Khi nào bạn cần lưu trữ phiên?
Nếu bạn chỉ muốn lưu trữ dữ liệu trong khi người dùng tương tác với trang web của bạn, thì lưu trữ phiên là lý tưởng. Điều này có thể dành cho dữ liệu sử dụng hoặc bộ nhớ đệm ngắn hạn về một lượt truy cập cụ thể vào trang web của bạn.
Lưu trữ phiên tốt hơn để lưu trữ thông tin nhạy cảm hơn vì nó hết hạn.
Bộ nhớ cục bộ so với Bộ nhớ phiên: Cái nào an toàn hơn?
Như bạn đã thấy, các phương pháp lưu trữ cục bộ và phiên giống nhau về nhiều mặt nhưng vẫn có các trường hợp sử dụng phù hợp. Bạn không nên coi chúng là an toàn vì chúng là công nghệ front-end mà JavaScript có quyền truy cập. Tuy nhiên, lưu trữ phiên là rất thuận tiện và bản chất tạm thời của nó là yên tâm.
Bộ nhớ cục bộ là vĩnh viễn vì vậy nó có thể gây ra các lo ngại về bảo mật bổ sung. Về lý thuyết, bất kỳ ai mở trình duyệt đều có thể truy cập vào bộ nhớ cục bộ. Bạn nên biết cách thức hoạt động của các cuộc tấn công XSS và cách ngăn chặn chúng.
Bộ nhớ cục bộ hoặc bộ nhớ phiên: Bạn nên sử dụng cái nào?
Lưu trữ phiên an toàn hơn một chút do tính chất tạm thời của nó. Tuy nhiên, việc lựa chọn phương pháp lưu trữ web của bạn phụ thuộc vào yêu cầu của bạn. Bộ nhớ JavaScript chỉ thích hợp nhất cho việc sử dụng phía máy khách. Nhưng nó cung cấp một kho dữ liệu dựa trên trình duyệt tiện lợi và rất dễ sử dụng.
Hãy nhớ rằng trong khi bộ nhớ cục bộ lưu trữ dữ liệu trên một số tab, thì phần lớn lưu trữ phiên là duy nhất cho mỗi tab. Bạn nên đảm bảo rằng ứng dụng của mình đưa ra ít giả định nhất có thể và phục vụ cho các trường hợp phức tạp.
Cookie là một dạng dữ liệu lâu đời hơn, nhưng chúng vẫn được sử dụng rất nhiều. Bạn có thể muốn kiểm tra chúng để tìm dữ liệu mà bạn cần truyền đến máy chủ.