Sự khác biệt giữa localStorage, sessionStorage, session và cookie là gì?


532

Những ưu và nhược điểm kỹ thuật của localStorage, sessionStorage, session và cookie và khi nào tôi sẽ sử dụng cái này hơn cái kia?


2
Đây cũng là một chủ đề liên quan tốt để xem: Lưu trữ cục bộ so với Lưu trữ phiên ( stackoverflow.com/questions/5523140/ chủ )
Sarin JS

2
Cũng lưu ý rằng cookie phiên tồn tại miễn là trình duyệt WINDOW mở (không phải tab được đặt) NHƯNG sessionStorage bị vô hiệu hóa ngay khi bạn đóng tab ...
yar1

Có phiên cũng là loại cookie. Đặc điểm là nó thoáng qua trong đó cookie vẫn tồn tại
Faris Rayhan

@ yar1 Một cửa sổ trình duyệt cụ thể là một thành phần UI không liên quan.
tò mò

Câu trả lời:


718

Đây là một câu hỏi phạm vi cực kỳ rộng, và rất nhiều ưu / nhược điểm sẽ tùy theo tình huống.

Trong mọi trường hợp, các cơ chế lưu trữ này sẽ dành riêng cho một trình duyệt riêng lẻ trên một máy tính / thiết bị riêng lẻ. Mọi yêu cầu lưu trữ dữ liệu trên cơ sở liên tục qua các phiên sẽ cần liên quan đến phía máy chủ ứng dụng của bạn - rất có thể là sử dụng cơ sở dữ liệu, nhưng có thể là XML hoặc tệp văn bản / CSV.

localStorage, sessionStorage và cookie là tất cả các giải pháp lưu trữ của khách hàng. Dữ liệu phiên được lưu trữ trên máy chủ nơi nó vẫn nằm dưới sự kiểm soát trực tiếp của bạn.

localStorage và sessionStorage

localStorage và sessionStorage là các API tương đối mới (có nghĩa là không phải tất cả các trình duyệt cũ sẽ hỗ trợ chúng) và gần giống nhau (cả về API và khả năng) ngoại trừ duy trì. sessionStorage (như tên cho thấy) chỉ khả dụng trong suốt thời gian của phiên trình duyệt (và bị xóa khi tab hoặc cửa sổ bị đóng) - tuy nhiên, nó vẫn tồn tại tải lại trang ( hướng dẫn lưu trữ DOM nguồn - Mạng của nhà phát triển Mozilla ).

Rõ ràng, nếu dữ liệu bạn đang lưu trữ cần phải có sẵn trên cơ sở liên tục thì localStorage thích hợp hơn với sessionStorage - mặc dù bạn cần lưu ý cả hai có thể bị xóa bởi người dùng vì vậy bạn không nên dựa vào sự tồn tại liên tục của dữ liệu trong cả hai trường hợp.

localStorage và sessionStorage là hoàn hảo để duy trì dữ liệu không nhạy cảm cần thiết trong các tập lệnh máy khách giữa các trang (ví dụ: tùy chọn, điểm số trong trò chơi). Dữ liệu được lưu trữ trong localStorage và sessionStorage có thể dễ dàng được đọc hoặc thay đổi từ bên trong máy khách / trình duyệt, do đó không nên dựa vào việc lưu trữ dữ liệu nhạy cảm hoặc liên quan đến bảo mật trong các ứng dụng.

Bánh quy

Điều này cũng đúng với cookie, chúng có thể bị người dùng can thiệp một cách tầm thường và dữ liệu cũng có thể được đọc từ chúng bằng văn bản thuần túy - vì vậy nếu bạn muốn lưu trữ dữ liệu nhạy cảm thì phiên thực sự là lựa chọn duy nhất của bạn. Nếu bạn không sử dụng SSL, thông tin cookie cũng có thể bị chặn trong quá trình vận chuyển, đặc biệt là trên một wifi mở.

Về mặt tích cực, cookie có thể được áp dụng mức độ bảo vệ khỏi các rủi ro bảo mật như Cross-Site Scripting (XSS) / Script bằng cách đặt cờ chỉ HTTP có nghĩa là các trình duyệt (hỗ trợ) hiện đại sẽ ngăn truy cập vào cookie và giá trị từ JavaScript ( điều này cũng sẽ ngăn JavaScript của bạn, hợp pháp, truy cập chúng). Điều này đặc biệt quan trọng với cookie xác thực, được sử dụng để lưu trữ mã thông báo chứa thông tin chi tiết về người dùng đã đăng nhập - nếu bạn có một bản sao của cookie đó cho tất cả ý định và mục đích bạn trở thành người dùng đó cho đến khi ứng dụng web được sử dụng liên quan và có cùng quyền truy cập vào dữ liệu và chức năng mà người dùng có.

Vì cookie được sử dụng cho mục đích xác thực và lưu giữ dữ liệu người dùng, tất cả các cookie hợp lệ cho một trang được gửi từ trình duyệt đến máy chủ cho mọi yêu cầu đến cùng một tên miền - điều này bao gồm yêu cầu trang gốc, mọi yêu cầu Ajax tiếp theo, tất cả hình ảnh, bảng định kiểu, tập lệnh và phông chữ. Vì lý do này, cookie không nên được sử dụng để lưu trữ một lượng lớn thông tin. Trình duyệt cũng có thể áp đặt các giới hạn về kích thước thông tin có thể được lưu trữ trong cookie. Thông thường, cookie được sử dụng để lưu trữ mã thông báo nhận dạng để xác thực, phiên và theo dõi quảng cáo. Các mã thông báo thường không phải là thông tin có thể đọc được của con người, nhưng các mã định danh được mã hóa được liên kết với ứng dụng hoặc cơ sở dữ liệu của bạn.

localStorage so với sessionStorage so với Cookies

Về khả năng, cookie, sessionStorage và localStorage chỉ cho phép bạn lưu trữ chuỗi - có thể chuyển đổi hoàn toàn các giá trị nguyên thủy khi cài đặt (chúng sẽ cần được chuyển đổi trở lại để sử dụng chúng làm kiểu của chúng sau khi đọc) nhưng không phải là Đối tượng hoặc Mảng (có thể JSON tuần tự hóa chúng để lưu trữ chúng bằng API). Lưu trữ phiên thường sẽ cho phép bạn lưu trữ bất kỳ nguyên thủy hoặc đối tượng nào được hỗ trợ bởi ngôn ngữ / khung phía Máy chủ của bạn.

Phía máy khách so với phía máy chủ

Vì HTTP là giao thức không trạng thái - các ứng dụng web không có cách nào xác định người dùng từ các lần truy cập trước khi quay lại trang web - dữ liệu phiên thường dựa vào mã thông báo cookie để xác định người dùng truy cập lặp lại (mặc dù hiếm khi sử dụng tham số URL cùng mục đích). Dữ liệu thường sẽ có thời gian hết hạn trượt (được gia hạn mỗi lần người dùng truy cập) và tùy thuộc vào dữ liệu máy chủ / khung của bạn sẽ được lưu trữ trong quá trình (có nghĩa là dữ liệu sẽ bị mất nếu máy chủ web gặp sự cố hoặc được khởi động lại) một máy chủ nhà nước hoặc cơ sở dữ liệu. Điều này cũng cần thiết khi sử dụng trang trại (nhiều hơn một máy chủ cho một trang web nhất định).

Vì dữ liệu phiên hoàn toàn được kiểm soát bởi ứng dụng của bạn (phía máy chủ), đây là nơi tốt nhất cho mọi thứ nhạy cảm hoặc an toàn trong tự nhiên.

Nhược điểm rõ ràng của dữ liệu phía máy chủ là khả năng mở rộng - tài nguyên máy chủ được yêu cầu cho mỗi người dùng trong suốt thời gian của phiên và rằng mọi dữ liệu khách hàng cần phải được gửi với mỗi yêu cầu. Vì máy chủ không có cách nào để biết liệu người dùng có điều hướng đến một trang web khác hoặc đóng trình duyệt của họ hay không, dữ liệu phiên phải hết hạn sau một thời gian nhất định để tránh tất cả tài nguyên máy chủ bị chiếm bởi các phiên bị bỏ rơi. Do đó, khi sử dụng dữ liệu phiên, bạn nên lưu ý đến khả năng dữ liệu sẽ hết hạn và bị mất, đặc biệt là trên các trang có dạng dài. Nó cũng sẽ bị mất nếu người dùng xóa cookie hoặc chuyển đổi trình duyệt / thiết bị.

Một số khung / nhà phát triển web sử dụng các đầu vào HTML ẩn để duy trì dữ liệu từ trang này sang trang khác để tránh hết hạn phiên.

localStorage, sessionStorage và cookie đều tuân theo quy tắc "cùng nguồn gốc", có nghĩa là các trình duyệt sẽ ngăn truy cập vào dữ liệu ngoại trừ tên miền đặt thông tin bắt đầu.

Để đọc thêm về các công nghệ lưu trữ của khách hàng, hãy xem Lặn vào Html 5 .


34
Chú ý: sessionStorage, localStorage không phù hợp với thông tin xác thực. Chúng không được tự động gửi đến máy chủ. Điều này có nghĩa là nếu người dùng thay đổi URL theo cách thủ công hoặc nhấp vào liên kết HTML, bạn sẽ không nhận được thông tin xác thực. Ngay cả khi bạn viết lại các liên kết HTML, bạn vẫn bị buộc phải truyền thông tin xác thực qua URL không bảo mật. Vào cuối ngày, bạn sẽ buộc phải sử dụng Cookies. Xem stackoverflow.com/q/26556749/14731 để biết chủ đề liên quan.
Gili

23
Sẽ sessionStoragebị xóa khi cửa sổ đóng, hoặc tab?
phân ly

34
SessionStorage sẽ bị xóa khi tab được đóng.
RCarrillopadron

10
@Gili tại sao việc chuyển thông tin xác thực qua URL là tùy chọn duy nhất nếu không sử dụng cookie? Tại sao không vượt qua nó trong một tiêu đề HTTP?
yby 29/12/14

21
@Gili Chính xác của bạn để nói rằng nó không gửi tự động, nhưng bạn không chính xác để nói nó không phù hợp. Tôi sử dụng localStorage và sessionStorage trong nhiều ứng dụng sản xuất khác nhau mà tôi đã sử dụng cho các khách hàng của mình và không có một lỗ hổng nào do dựa vào localStorage / sessionStorage cùng với việc gửi id và mã thông báo trong các tiêu đề. Tải ít hơn trên máy chủ thậm chí. Ngoài ra, tôi liên kết một sự kiện với tải lại trang và các móc tải ứng dụng để hỏi phần phụ trợ của tôi nếu người dùng này vẫn xác thực. Công trình tuyệt vời. Chúc mừng xác thực! EDIT: Mã thông báo CSRF với tất cả các tính năng bảo mật hơn nữa.
NodeDad

74
  1. Lưu trữ cục bộ

    Ưu điểm :

    1. Lưu trữ web có thể được xem một cách đơn giản như một sự cải tiến về cookie, cung cấp dung lượng lưu trữ lớn hơn nhiều. Nếu bạn nhìn vào mã nguồn Mozilla chúng ta có thể thấy rằng 5120KB ( 5MB bằng với 2,5 triệu ký tự trên Chrome) là kích thước lưu trữ mặc định cho toàn bộ miền. Điều này cung cấp cho bạn nhiều không gian để làm việc hơn so với cookie 4KB thông thường.
    2. Dữ liệu không được gửi trở lại máy chủ cho mọi yêu cầu HTTP (HTML, hình ảnh, JavaScript, CSS, v.v.) - giảm lượng lưu lượng giữa máy khách và máy chủ.
    3. Dữ liệu được lưu trữ trong localStorage vẫn tồn tại cho đến khi bị xóa rõ ràng. Những thay đổi được thực hiện được lưu và có sẵn cho tất cả các lượt truy cập hiện tại và tương lai vào trang web.

    Nhược điểm :

    1. Nó hoạt động trên chính sách cùng nguồn gốc . Vì vậy, dữ liệu được lưu trữ sẽ chỉ có sẵn trên cùng một nguồn gốc.
  2. Bánh quy

    Ưu điểm:

    1. So với những người khác, không có gì AFAIK.

    Nhược điểm:

    1. Giới hạn 4K dành cho toàn bộ cookie, bao gồm tên, giá trị, ngày hết hạn, v.v. Để hỗ trợ hầu hết các trình duyệt, hãy giữ tên dưới 4000 byte và kích thước cookie chung dưới 4093 byte.
    2. Dữ liệu được gửi trở lại máy chủ cho mọi yêu cầu HTTP (HTML, hình ảnh, JavaScript, CSS, v.v.) - tăng lượng lưu lượng giữa máy khách và máy chủ.

      Thông thường, những điều sau đây được cho phép:

      • Tổng cộng 300 cookie
      • 4096 byte mỗi cookie
      • 20 cookie cho mỗi tên miền
      • 81920 byte cho mỗi tên miền (Cho 20 cookie có kích thước tối đa 4096 = 81920 byte.)
  3. phiênStorage

    Ưu điểm:

    1. Nó tương tự như localStorage.
    2. Dữ liệu không liên tục, tức là dữ liệu chỉ khả dụng trên mỗi cửa sổ (hoặc tab trong các trình duyệt như Chrome và Firefox). Dữ liệu chỉ có sẵn trong phiên trang. Các thay đổi được thực hiện được lưu và có sẵn cho trang hiện tại, cũng như các lượt truy cập trong tương lai vào trang web trên cùng một cửa sổ. Khi cửa sổ được đóng lại, bộ nhớ sẽ bị xóa.

    Nhược điểm:

    1. Dữ liệu chỉ có sẵn bên trong cửa sổ / tab được đặt.
    2. Giống như localStorage, nó hoạt động trên chính sách cùng nguồn gốc . Vì vậy, dữ liệu được lưu trữ sẽ chỉ có sẵn trên cùng một nguồn gốc.

Thanh toán trên các tab - cách tạo điều kiện giao tiếp dễ dàng giữa các tab trình duyệt có nguồn gốc chéo.


13
Cookies : " Dữ liệu được gửi trở lại máy chủ cho mọi yêu cầu HTTP ". Trong một số trường hợp sử dụng (như trong quá trình xác thực), điều này cũng có thể được coi là một lợi thế. sessionStorage : " Thay đổi chỉ khả dụng trên mỗi cửa sổ (hoặc tab trong các trình duyệt như Chrome và Firefox) ". Tôi nghĩ sẽ tốt hơn khi xây dựng nó " Thay đổi chỉ có sẵn trong phiên trang ". Một phiên trang kéo dài miễn là trình duyệt được mở và tồn tại qua các lần tải lại và khôi phục trang (từ MDN: developer.mozilla.org/en/docs/Web/API/Window/sessionStorage )
Deniz

Đã cập nhật! Cảm ơn @DenizToprak
softvar

1
@softvar: sessionStorage - Con 2 . : "Dữ liệu không liên tục, tức là nó sẽ bị mất khi cửa sổ / tab bị đóng." - Đây chắc chắn không phải là một khiếm khuyết. Tôi sẽ nói đó là một lợi thế. Đó là lưu trữ "phiên" sau khi tất cả. Nó được thiết kế để làm việc theo cách đó.
xây dựng

@devstructor Yea, bạn nói đúng. Tôi nghĩ rằng về mặt lưu trữ một số dữ liệu cục bộ. Đã cập nhật câu trả lời. Cảm ơn đã chỉ ra rằng.
softvar

57

OK, LocalStorage vì nó được gọi là bộ nhớ cục bộ cho trình duyệt của bạn, nó có thể tiết kiệm tới 10MB , SessionStorage cũng như vậy, nhưng như tên của nó, nó dựa trên phiên và sẽ bị xóa sau khi đóng trình duyệt của bạn, cũng có thể tiết kiệm ít hơn LocalStorage, giống như lên tới 5MB , nhưng Cookies là bộ lưu trữ dữ liệu rất nhỏ trong trình duyệt của bạn, có thể tiết kiệm tối đa 4KB và có thể được truy cập thông qua máy chủ hoặc trình duyệt cả ...

Tôi cũng đã tạo ra hình ảnh dưới đây để thể hiện sự khác biệt trong nháy mắt:

LocalStorage, SessionStorage và Cookies


25

Đây là các thuộc tính của đối tượng 'window' trong JavaScript, giống như tài liệu là một trong các thuộc tính của đối tượng window chứa các đối tượng DOM.

Thuộc tính lưu trữ phiên duy trì một vùng lưu trữ riêng cho từng nguồn gốc nhất định có sẵn trong suốt thời gian của phiên trang, miễn là trình duyệt được mở, bao gồm tải lại và khôi phục trang.

Local Storage cũng làm điều tương tự, nhưng vẫn tồn tại ngay cả khi trình duyệt được đóng và mở lại.

Bạn có thể thiết lập và truy xuất dữ liệu được lưu trữ như sau:

sessionStorage.setItem('key', 'value');

var data = sessionStorage.getItem('key');

Tương tự cho localStorage.


10
Chỉ cần thêm - cho sessionStoragengay cả một tab mới là một cửa sổ mới. Vì vậy, mọi thứ được lưu trữ cho một tên miền cụ thể trong một tab sẽ không có sẵn cho cùng một tên miền trong tab tiếp theo.
RBT

5

Lưu trữ cục bộ: Nó lưu trữ dữ liệu thông tin người dùng mà không hết hạn, dữ liệu này sẽ không bị xóa khi người dùng đóng các cửa sổ trình duyệt, nó sẽ có sẵn cho ngày, tuần, tháng và năm.

Trong lưu trữ cục bộ có thể lưu trữ dữ liệu ngoại tuyến 5-10mb.

//Set the value in a local storage object
localStorage.setItem('name', myName);

//Get the value from storage object
localStorage.getItem('name');

//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

Lưu trữ phiên: Giống như ngày lưu trữ cục bộ ngoại trừ việc nó sẽ xóa tất cả các cửa sổ khi cửa sổ trình duyệt đóng bởi người dùng web.

Trong phiên lưu trữ có thể lưu trữ tối đa 5 mb dữ liệu

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

Phiên : Phiên là biến toàn cục được lưu trữ trên máy chủ. Mỗi phiên được gán một id duy nhất được sử dụng để truy xuất các giá trị được lưu trữ.

Cookies : Cookies là dữ liệu, được lưu trữ trong các tệp văn bản nhỏ dưới dạng cặp giá trị tên trên máy tính của bạn. Khi cookie đã được đặt, tất cả các yêu cầu trang tiếp theo sẽ trả về tên và giá trị của cookie.


2

API lưu trữ web cung cấp các cơ chế theo đó các trình duyệt có thể lưu trữ các cặp khóa / giá trị một cách an toàn, theo cách trực quan hơn nhiều so với sử dụng cookie. Các API lưu trữ Web mở rộng Windowđối tượng với hai thuộc tính mới - Window.sessionStorageWindow.localStorage. - việc gọi một trong số này sẽ tạo một thể hiện của đối tượng Storage, thông qua đó các mục dữ liệu có thể được đặt, truy xuất và xóa. Một đối tượng lưu trữ khác nhau được sử dụng cho sessionStoragelocalStoragecho mỗi nguồn gốc (tên miền).

Các đối tượng lưu trữ là các kho lưu trữ khóa-giá trị đơn giản , tương tự như các đối tượng, nhưng chúng vẫn nguyên vẹn thông qua tải trang .

localStorage.colorSetting = '#a4509b';
localStorage['colorSetting'] = '#a4509b';
localStorage.setItem('colorSetting', '#a4509b');

Các khóa và các giá trị luôn là các chuỗi . Để lưu trữ bất kỳ loạiconvert it to Stringvà sau đó lưu trữ nó. Chúng tôi luôn khuyến nghị sử dụngStorage interfacecác phương pháp.

var testObject = { 'one': 1, 'two': 2, 'three': 3 };
// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('Converting String to Object: ', JSON.parse(retrievedObject));

Hai cơ chế trong Lưu trữ web như sau:

  • sessionStorage duy trì một vùng lưu trữ riêng cho từng nguồn gốc nhất định Chính sách nguồn gốc tương tự có sẵn trong suốt thời gian của phiên trang (miễn là trình duyệt được mở, bao gồm tải lại và khôi phục trang).
  • localStorage cũng làm điều tương tự, nhưng vẫn tồn tại ngay cả khi trình duyệt được đóng và mở lại.

Lưu trữ « Lưu trữ cục bộ ghi dữ liệu vào đĩa, trong khi lưu trữ phiên chỉ ghi dữ liệu vào bộ nhớ. Bất kỳ dữ liệu nào được ghi vào bộ lưu trữ phiên sẽ bị xóa khi ứng dụng của bạn thoát.

Dung lượng lưu trữ tối đa khả dụng là khác nhau trên mỗi trình duyệt , nhưng hầu hết các trình duyệt đã triển khai ít nhất giới hạn lưu trữ tối đa được đề xuất của w3c là 5MB .

+----------------+--------+---------+-----------+--------+
|                | Chrome | Firefox | Safari    |  IE    |
+----------------+--------+---------+-----------+--------+
| LocalStorage   | 10MB   | 10MB    | 5MB       | 10MB   |
+----------------+--------+---------+-----------+--------+
| SessionStorage | 10MB   | 10MB    | Unlimited | 10MB   |
+----------------+--------+---------+-----------+--------+

Luôn luôn bắt lỗi bảo mật và hạn ngạch của LocalStorage

StorageEvent «Sự kiện lưu trữ được kích hoạt trên đối tượng Window của tài liệu khi vùng lưu trữ thay đổi. Khi một tác nhân người dùng gửi thông báo lưu trữ cho Tài liệu, tác nhân người dùng phải xếp hàng một tác vụ để thực hiện một sự kiện có tên lưu trữ tại đối tượng Window của đối tượng Tài liệu, sử dụng StorageEvent.

Lưu ý: Để biết ví dụ trong thế giới thực, hãy xem Trình diễn lưu trữ web . kiểm tra mã nguồn

Nghe sự kiện lưu trữ trên dom / Window để nắm bắt những thay đổi trong bộ lưu trữ. bí ẩn .


Cookie (cookie web, cookie trình duyệt) Cookie là dữ liệu, được lưu trữ trong các tệp văn bản nhỏ dưới dạng cặp giá trị tên, trên máy tính của bạn.

Truy cập JavaScript bằng Document.cookie

Các cookie mới cũng có thể được tạo thông qua JavaScript bằng thuộc tính Document.cookie và nếu cờ httpOnly không được đặt, các cookie hiện tại cũng có thể được truy cập từ JavaScript.

document.cookie = "yummy_cookie=choco"; 
document.cookie = "tasty_cookie=strawberry"; 
console.log(document.cookie); 
// logs "yummy_cookie=choco; tasty_cookie=strawberry"

Cookie an toàn và httpOnly Cơ chế quản lý nhà nước HTTP

Cookies thường được sử dụng trong ứng dụng web để xác định người dùng và phiên xác thực của họ

Khi nhận được yêu cầu HTTP, máy chủ có thể gửi tiêu đề Set-Cookie kèm theo phản hồi. Cookie thường được trình duyệt lưu trữ và sau đó cookie được gửi với các yêu cầu được gửi đến cùng một máy chủ bên trong tiêu đề Cookie HTTP.

Set-Cookie: <cookie-name>=<cookie-value> 
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>

Cookie phiên sẽ được gỡ bỏ khi máy khách bị tắt. Họ không chỉ định các Chỉ thị hết hạn hoặc Tuổi tối đa.

Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/

Cookie vĩnh viễn hết hạn vào một ngày cụ thể (Hết hạn) hoặc sau một khoảng thời gian cụ thể (Tuổi tối đa).

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly

Tiêu đề yêu cầu HTTP Cookie chứa cookie HTTP được lưu trữ trước đó được gửi bởi máy chủ với tiêu đề Set-Cookie. Các cookie chỉ HTTP không thể truy cập thông qua JavaScript thông qua thuộc tính Document.cookie, XMLHttpRequest và API yêu cầu để giảm thiểu các cuộc tấn công chống lại kịch bản chéo trang (XSS).

Cookies chủ yếu được sử dụng cho ba mục đích:

  • Quản lý phiên «Đăng nhập, giỏ mua hàng, điểm trò chơi hoặc bất cứ điều gì khác mà máy chủ nên nhớ
  • Cá nhân hóa «Tùy chọn người dùng, chủ đề và các cài đặt khác
  • Theo dõi (Ghi lại và phân tích hành vi người dùng) «Cookies có một miền liên quan đến chúng. Nếu tên miền này giống với tên miền của trang bạn đang truy cập, cookie được gọi là cookie của bên thứ nhất. Nếu tên miền khác, nó được gọi là cookie của bên thứ ba. Mặc dù cookie của bên thứ nhất chỉ được gửi đến máy chủ cài đặt chúng, một trang web có thể chứa hình ảnh hoặc các thành phần khác được lưu trữ trên máy chủ trong các tên miền khác (như biểu ngữ quảng cáo). Cookie được gửi qua các thành phần của bên thứ ba này được gọi là cookie của bên thứ ba và chủ yếu được sử dụng để quảng cáo và theo dõi trên web.

Cookies được phát minh để giải quyết vấn đề "làm thế nào để nhớ thông tin về người dùng":

  • Khi người dùng truy cập một trang web, tên của anh ta có thể được lưu trữ trong một cookie.
  • Lần tới khi người dùng truy cập trang, cookie thuộc về trang sẽ được thêm vào yêu cầu. Bằng cách này, máy chủ sẽ lấy dữ liệu cần thiết để "ghi nhớ" thông tin về người dùng.

Ví dụ về GitHubGist


Như tóm tắt,

  • localStorage vẫn tồn tại trên các tab hoặc cửa sổ khác nhau và ngay cả khi chúng tôi đóng trình duyệt, theo chính sách bảo mật tên miền và lựa chọn của người dùng về giới hạn hạn ngạch.
  • Đối tượng sessionStorage không tồn tại nếu chúng ta đóng tab (bối cảnh duyệt cấp cao nhất) vì nó không tồn tại nếu chúng ta lướt qua một tab hoặc cửa sổ khác.
  • Lưu trữ web (phiên, cục bộ) cho phép chúng tôi lưu một số lượng lớn các cặp khóa / giá trị và rất nhiều văn bản, điều không thể thực hiện thông qua cookie.
  • Cookies được sử dụng cho các hành động nhạy cảm chỉ nên có thời gian tồn tại ngắn.
  • Cookies chủ yếu được sử dụng để quảng cáo và theo dõi trên web. Xem ví dụ về các loại cookie được sử dụng bởi Google .
  • Cookies được gửi với mọi yêu cầu, vì vậy chúng có thể làm giảm hiệu suất (đặc biệt đối với các kết nối dữ liệu di động). API hiện đại để lưu trữ ứng dụng khách là API lưu trữ Web (localStorage và sessionStorage) và IndexedDB.

2

Bảo hiểm địa phương :

  • Lưu trữ web có thể được xem một cách đơn giản như một sự cải tiến về cookie, cung cấp dung lượng lưu trữ lớn hơn nhiều. Kích thước khả dụng là 5MB, không gian để làm việc nhiều hơn đáng kể so với cookie 4KB thông thường.

  • Dữ liệu không được gửi trở lại máy chủ cho mọi yêu cầu HTTP (HTML, hình ảnh, JavaScript, CSS, v.v.) - giảm lượng lưu lượng giữa máy khách và máy chủ.

  • Dữ liệu được lưu trữ trong localStorage vẫn tồn tại cho đến khi bị xóa rõ ràng. Những thay đổi được thực hiện được lưu và có sẵn cho tất cả các lượt truy cập hiện tại và tương lai vào trang web.

  • Nó hoạt động trên chính sách cùng nguồn gốc. Vì vậy, dữ liệu được lưu trữ sẽ chỉ có sẵn trên cùng một nguồn gốc.

Bánh quy:

  • Chúng tôi có thể đặt thời gian hết hạn cho mỗi cookie

  • Giới hạn 4K dành cho toàn bộ cookie, bao gồm tên, giá trị, ngày hết hạn, v.v. Để hỗ trợ hầu hết các trình duyệt, hãy giữ tên dưới 4000 byte và kích thước cookie chung dưới 4093 byte.

  • Dữ liệu được gửi trở lại máy chủ cho mọi yêu cầu HTTP (HTML, hình ảnh, JavaScript, CSS, v.v.) - tăng lượng lưu lượng giữa máy khách và máy chủ.

phiênStorage:

  • Nó tương tự như localStorage.
  • Thay đổi chỉ khả dụng trên mỗi cửa sổ (hoặc tab trong các trình duyệt như Chrome và Firefox). Các thay đổi được thực hiện được lưu và có sẵn cho trang hiện tại, cũng như các lượt truy cập trong tương lai vào trang web trên cùng một cửa sổ. Khi cửa sổ được đóng, bộ nhớ sẽ bị xóa Dữ liệu chỉ có sẵn bên trong cửa sổ / tab được đặt.

  • Dữ liệu không liên tục, tức là nó sẽ bị mất khi cửa sổ / tab được đóng lại. Giống như localStorage, nó hoạt động trên chính sách cùng nguồn gốc. Vì vậy, dữ liệu được lưu trữ sẽ chỉ có sẵn trên cùng một nguồn gốc.


0

đây là một đánh giá nhanh và với sự hiểu biết đơn giản và nhanh chóng

nhập mô tả hình ảnh ở đây

từ giáo viên Beau Carnes từ freecodecamp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.