Cookie 是服务器通过 Set-Cookie 响应头给浏览器的一串字符串
浏览器访问相同域名时必须带上这段字符串
浏览器在一段时间内要保存 Cookie
Cookie 的大小大概在 4KB 左右
————————————————————
Session 是服务器保存的
服务器通过 Cookie 给浏览器一个 SessionID
服务器有一块内存保存了类似于 { SessionID:Session }的哈希数据结构
浏览器访问服务器时,服务器读取 SessionID,根据 ID 找到对应的 Session,服务器就可以读取 Session 中的用户信息了
Cookie 和 LocalStorage 的区别?
Cookie 是服务器通过 Set-Cookie 响应头给浏览器的一串字符串
浏览器访问相同域名时必须带上这段字符串
浏览器在一段时间内要保存 Cookie
Cookie 的大小大概在 4KB 左右
——————————————————————————————————————
LocalStorage 是在浏览器本地保存的(可能保存在 C 盘之类的地方)并且和 HTTP 无关
只有在相同域名的页面才能互相读取 LocalStorage,但是没有同源策略那么严格
LocalStorage 如果用户不特意清除会永远保存
LocalStorage 的大小大概在 5MB 左右
LocalStorage 和 SessionStorage 的区别
LocalStorage 是在浏览器本地保存的(可能保存在 C 盘之类的地方)并且和 HTTP 无关
只有在相同域名的页面才能互相读取 LocalStorage,但是没有同源策略那么严格
LocalStorage 如果用户不特意清除会永远保存
LocalStorage 的大小大概在 5MB 左右
————————————————————————————————————————
SessionStorage 和 LocalStorage 差不多,但是 SessionStorage 关闭页面就会消失
Cookie 如何设置过期时间?
两种方法,设置 Cache-Control 或者设置 Expires,设置 Expires 是老方法,现在推荐使用 Cache-Control
Cache-Contro:1
response.setHeader('Cache-Contro','max-age=30')
Expires:1
response.setHeader('Expires','Wed, 26 Dec 2018 06:59:19 GMT')
两者的区别是前者规定过了多少时间后失效,后者是到了某个时间之后失效 (后者指的是本地时间)
如何删除 Cookie?
可以用 js 来删除,也可以用户通过浏览器的清除缓存选项,把清除 Cookie 勾选上来删除。
还有 Cookie 过期了就自动删除了
Cache-Control: max-age=1000 缓存 与 ETag 的 “缓存” 有什么区别?
Cache-Control: max-age=1000
在一千秒后 Cookie 会过期,在此期间除了第一次访问外,浏览器会直接从内存获取文档而不是通过 Http 请求,这个过程产生 0 流量
在一千秒后还得通过 Http 请求获取文档
——————————————————————————————
ETag 相当于一个版本号,浏览器持有的这个版本号和服务器端一样的话就不用再重新下载文档了,但是和服务器端对比版本号这个过程会产生流量。