【红宝书笔记】cookie,[session|global|local]Storae的异同

cookie and storage

相同:

1.都是键对值方式存储

2.都有长短期两种存储方式

区别:

1.cookie:有长期和短期。默认为短期,即在浏览器关闭后消失。每次http请求都会附带cookie,所以cookie大小很重要。

指定格式:name=value; expires=xx; path=xx; domain=xx; secure (bool) 

2.storage(session- , global-, local-),只有session是短期的,在会话后消失。存储在本地浏览器,不会随http发送。

剩下的都是保存到浏览器删除或者js删除。session不可以跨会话,可以跨越刷新。global可以跨会话,可以跨域(如果指定)。local可以跨会话,不可跨域。

********************************************************************************************

明天要面试。。紧张紧张> <

1.cookie

对于cookie的数量,一般浏览器是加以限制的。在同一个域名下,除了Safari和chrome不做限制,其他浏览器是30-50个左右。当cookie数量超出之后,浏览器会把旧的cookie移出,有些是清除最近最少,有些是随机清除。这样有点像操作系统中关于cache的替换机制。。。

对于cookie的大小,浏览器也是有加以限制的。一般一个域名下的cookie不超过4096B。

对cookie的数量和大小加以限制是因为cookie是随着http请求一起发送的,并且存储在本地。cookie过多,过大,会导致加载缓慢,系统运行负担加重等后果。

对cookie有这么几种设置:

1.key=value。键值的设置显然是必须的。只有他们会被发送,以下的几个值都是服务器发送给客户端,知道他们怎么处理cookie的。都是需要URL编码的。

2.域(domain)。指定cookie是放在什么域下的。

3.路径(path)。设定cookie是放在什么域中的路径下的,所以即使同域不同路径都是不能访问该内容的。

4.失效时间(expires)。不设置的话就是在浏览器关闭之后删除。如果设置,是一个GMT格式的时间

5.安全标志(secure)。不指定就没有,指定secure后,只有在SSL连接时才发送

对cookie的处理方式:

在js中通过document.cookie获取该页面下的所有可用cookie。但是这些cookie都是经过URL编码的,所以需要使用decodeURIComponent()来解码。

查询所需的cookie值时,肯定是根据相关的key值来寻找value值。但是由于cookie都经过编码了。。所以要把对应的key先通过encodeURIComponent()来编码,然后在所有的cookie中进行查询,在解码转回。

追加cookie的时候,把要写入的key=value编码后追加进document.cookie就好。

删除cookie的时候,找到指定的cookie,清空value值,把expire值设置成过去的时间就可以了。

2.Storage

为了让一些数据不用一直随http发送,也为了能跨会话(页面?)访问,就有了storage。

storage相对就好操作许多,主要方法:

clear():删除所有值(Firefox中没有)

removeItem(name):删除指定的storage

setItem(name, value):设定storage

getItem(name):获得指定的值

key(index):获得index处值的名字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值