Cookie 是一种被服务端脚本使用的客户端存储机制,能够存储少量的信息。 每一次 HTTP 请求,无论是否需要,都会把这些数据传输到服务器端。目前绝大多数的浏览器都支持。
max-age
属性,明确表明 cookie 的有效期(单位为秒)。 一旦设置了有效期,浏览器会将 cookie 数据存储在一个文件中,直到过了有效期才会删除该文件。/
,则该域名下所有的页面都能共享该 cookie。Set-Cookie
头中明确指定域的情况下,子域名共享父域名的 Cookie。img.example.com
。secure
使得 cookie 仅作用于 https 链接中。 设置 httpOnly
使得 cookie 不能被 JavaScript 调用。 设置 sameSite
使得 cookie 跨站请求时无效。sameSite
采用三个可能的值:Strict
,Lax
和 None
。 使用 Strict
,Cookie 仅发送到与它起源的站点相同的站点; Lax
与之类似,但用户从外部站点导航至 URL 时(例如通过链接)除外。 没有一个对跨站点请求没有限制。浏览器正在将 cookie 的默认值从none
迁移至Lax
. 如果 cookie 使用跨域使用,需要明确指定sameSite
属性为none
.
web storage 最初作为 HTML5 的一部分被定义成 API 的形式,包含了 localStorage 对象和 sessionStorage 对象,这两个对象实际上是持久化关联数组,是键值对的映射表,“key” 和 “value” 都是字符串。 目前,Web Storage 已经被剥离出来作为独立的一份标准。
文档源通过协议、主机名和端口三部分确定
不过,现在许多现代浏览器具备了重新打开最近关闭的标签页,并恢复上一次浏览的绘画功能。
obj
:IE5 以及 IE5 以上版本的浏览器是通过在 document 元素后面附加一个专属的“DHTML 行为”来实现客户端存储。
load
和save
方法。并且可以通过getAttribute
和setAttribute
方法查询和设置数据,然后调用save
方法可以存储新的数据。HTML5 中新增了“应用程序缓存”,开发者可以使用Application Cache
接口设定浏览器应该缓存的资源。允许 Web 应用在处于离线状态时,也能正常加载与工作。不过该特性已经从 Web 标准中删除,未来将会使用 Service Workers 的方式来实现应用程序缓存
<html>
元素上增加manifest
特性:manifest
特性的文档时,如果缓存不存在,浏览器会加载文档,然后获取所有在清单文件中的资源,生产缓存的第一个版本;window.applicationCache
对象发送一个checking
事件;applicationCache
对象发送一个noupdate
事件,更新过程结束;applicationCache.add
方法添加到缓存中的那些文件)会被获取并放到一个临时缓存中。对于每个加入到缓存中的文件,浏览器会向applicationCache
对象发送一个progress
事件。如果出现任何错误,浏览器会发送一个error
事件,并暂停更新;applicationCache
对象发送一个cached
事件。text/cache-manifest
该规范的僵局:目前的所有实现都基于同一个 SQL 后端 —— SQLite,但是需要更多的独立实现来规范化