缓存变量:localStorage或cookie
Caching a variable: localStorage or a cookie?
这是对这个问题的后续回答,在这个问题中,我被要求在制作cookie和使用localStorage
在几个会话中保持变量之间做出选择。有人能告诉我这两种方法的优缺点,并建议我选择哪一种吗?
我用 localStorage 。
优点
- 快速、方便地读取/写入您的数据
- 您的数据不会随着每个请求一起传输到服务器,从而减少负载
- 键值对时尚
缺点
- 旧浏览器不支持
- 每个域最多可存储 5mb 数据
说到cookie,它们有时会很有用。当你想在用户关闭浏览器/会话后恢复购物车中的物品时,在购物车中cookie是非常有用的。但是,不要存储太多的cookie,因为它们会随着您发出的每个请求(也包括AJAX请求)传输到服务器。当/如果你的站点变得流行并且每小时/天获得数千/数十万的点击量时,这可能会导致严重的瓶颈。想想看。
希望能有所帮助。
其他人未提及的点以粗体:
- cookie与每个页面请求一起发送到服务器,localStorage不是。这意味着:
- 当您只需要在客户端时,没有不必要的数据传输
- 但是当您需要服务器上的值时,它需要在页面加载后使用额外的XmlHttpRequest传输
- localStorage有更大的容量
- 许多实现localStorage的浏览器没有禁用它的选项,或者这个选项比阻止cookie的选项隐藏得更好,所以更少的用户禁用它(许多知道cookie的人甚至不知道这个功能存在)。 在我看来,localStorage有一个更容易使用的API
- localStorage没有过期头(但这可以通过向数据添加额外的过期日期并手动处理来轻松模拟)
顺便说一下:不要忘记sessionStorage。API是相同的,并且在许多情况下,它比持久的localStorage
我只列出我想到的四点:
- localStorage不会随每个请求一起传输。它留在客户端(这很好,更精简的请求)
- 具有比Cookie更大的大小限制(您可以存储更多)
- 更容易的API获取/设置值(IMO)
- 存储在localStorage中的值不会传递给服务器。如果您需要知道存储在服务器端的值,那么使用cookie。
localStorage
较新,部分HTML5和较旧的浏览器可能不支持它。它也只是客户端,这意味着您的服务器永远不会看到它,除非某些客户端代码显式地将它发送到服务器。界面非常容易使用,而且速度非常快。
cookie是普遍支持的,每个请求都会自动发送到服务器。但是客户机和服务器都可以访问cookie值,而不需要额外的工作。在一些库的帮助下,从JavaScript管理cookie的界面非常迟钝。
如果值只需要是本地的,并且旧的浏览器支持不是问题,使用localStorage
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何将localStorage值设置为false
- 在jquery中为显示/隐藏设置cookie
- 按下按钮时保存cookie
- 如果localstorage为空,则显示欢迎消息
- 基于localStorage的Meteor激活模板
- 如何在Analytics.js中始终了解最新的cookie过期时间
- php httponly cookie在浏览器关闭时被删除
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- LocalStorage phonegap摄像头图像
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- 为什么localStorage[“..”]未定义,而localStorage.getItem(“..”)为null
- CORS-服务器端cookie没有保存在chrome浏览器上
- 清除firefox中的cookie也会删除localStorage吗
- 如何在我的程序上应用 localStorage 或 javascript Cookie
- 为什么不是'是否使用localStorage而不是cookie?(在其他情况下也是如此)
- 是否有可能使用localstorage与上下文每路径像cookie
- cookie、localStorage和jquery数据用于存储大小和位置信息
- 注销时使cookie/localStorage数据无效是一种好的做法吗
- 缓存变量:localStorage或cookie