返回

本地存储的前世今生:从cookie到localStorage

前端

随着互联网的快速发展,浏览器已经成为我们生活中不可或缺的工具。我们使用浏览器来访问各种各样的网站,这些网站通常会存储一些数据在我们的计算机上,以便下次访问时能够快速加载。这些数据通常存储在cookie中。

Cookie的基本使用

cookie是一种由服务器发送给浏览器并由浏览器存储的文本文件。cookie通常包含一些基本信息,如用户的登录状态、购物车内容等。

如果想更灵活的操作cookie,可以把cookie的保存,读取,删除封装成方法来调用:

// 设置cookie
function setCookie(name, value, days) {
  var expires = "";
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toUTCString();
  }
  document.cookie = name + "=" + (value || "") + expires + "; path=/";
}

// 获取cookie
function getCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

// 删除cookie
function deleteCookie(name) {
  setCookie(name, "", -1);
}

本地存储

随着HTML5的出现,Web存储API也随之诞生了。Web存储API提供了两种新的存储机制:本地存储和会话存储。本地存储与cookie非常相似,但它有一些重要的区别。

  • 本地存储的数据不会在浏览器会话之间过期。这意味着即使你关闭了浏览器,本地存储的数据仍然存在。
  • 本地存储的数据存储在浏览器的本地计算机上,而不是服务器上。这意味着本地存储的数据对服务器不可见。
  • 本地存储的数据没有大小限制,而cookie的数据大小限制为4KB。

本地存储非常适合存储一些不敏感的数据,例如用户的登录状态、购物车内容、用户设置等。

本地存储的使用

使用本地存储非常简单。首先,你需要创建一个存储对象。你可以使用以下代码来创建一个存储对象:

var storage = window.localStorage;

然后,你可以使用以下代码来存储数据:

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

你可以使用以下代码来获取数据:

var value = storage.getItem('key');

你也可以使用以下代码来删除数据:

storage.removeItem('key');

本地存储的局限性

本地存储也有其局限性。本地存储的数据对服务器不可见,这可能会导致一些问题。例如,如果你使用本地存储来存储用户的登录状态,那么当用户在其他设备上登录时,他将无法访问自己的账户。

此外,本地存储的数据没有大小限制,这可能会导致浏览器崩溃。因此,在使用本地存储时,你需要注意数据的大小。

如何克服本地存储的局限性

有几种方法可以克服本地存储的局限性。一种方法是使用会话存储。会话存储与本地存储非常相似,但它有一些重要的区别。

  • 会话存储的数据只在当前浏览器会话中存在。这意味着当用户关闭浏览器时,会话存储的数据将被删除。
  • 会话存储的数据存储在浏览器的内存中,而不是本地计算机上。这意味着会话存储的数据对服务器可见。

会话存储非常适合存储一些敏感的数据,例如用户的信用卡信息、密码等。

另一种方法是使用IndexedDB。IndexedDB是一种低级别的API,它允许你存储和检索大量的数据。IndexedDB的数据存储在浏览器的本地计算机上,但它对服务器可见。

IndexedDB非常适合存储一些需要经常访问的大量数据,例如离线数据、游戏数据等。