- Cookie Session LocalStorage Sess
- Cookie/Session/LocalStorage/Sess
- session,cookie,localStorage,sess
- cookie session localStorage sess
- Cookie、Session、LocalStorage、Sess
- cookie,session,localStorage,sess
- cookie,session,localstorage,sess
- Cookie Session LocalStorage Sess
- Cookie-Session-LocalStorage-Sess
- Cookie、Session、Localstorage和Sess
1. Cookie
Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。
Cookie
- 服务器通过 Set-Cookie 头给客户端一串字符串
- 客户端每次访问相同域名的网页时,必须带上这段字符串
- 客户端要在一段时间内保存这个Cookie
- Cookie 默认在用户关闭页面后就失效,后台代码可以任意设置 Cookie 的过期时间
- 大小大概在 4kb 以内
Session
- 将 SessionID(随机数)通过 Cookie 发给客户端
- 客户端访问服务器时,服务器读取 SessionID
- 服务器有一块内存(哈希表)保存了所有 session
- 通过 SessionID 我们可以得到对应用户的隐私信息,如 id、email
- 这块内存(哈希表)就是服务器上的所有 session
LocalStorage
LocalStorage 跟 HTTP 无关
HTTP 不会带上 LocalStorage 的值
只有相同域名的页面才能互相读取 LocalStorage(没有同源那么严格)
每个域名 localStorage 最大存储量为 5Mb 左右(每个浏览器不一样)
常用场景:记录有没有提示过用户(没有用的信息,不能记录密码)
LocalStorage 永久有效,除非用户清理缓存
SessionStorage(会话存储)
1、2、3、4 同上
SessionStorage 在用户关闭页面(会话结束)后就失效。
Session 可以用 LocalStorage + 查询参数实现
Cache-Control 是什么?
缓存控制
在响应头设置
response.setHeader("cache-control","max-age=30")
设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒)。与Expires相反,时间是相对于请求的时间。
Expire 是什么?
Expires: Wed, 21 Oct 2015 07:28:00 GMT
与cache-control相同,缓存过期时间,但是设置cache-control后,expires会被忽略
MD5 是什么?
消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
ETag 是什么?
ETag HTTP响应头是资源的特定版本的标识符。这可以让缓存更高效,并节省带宽,因为如果内容没有改变,Web服务器不需要发送完整的响应。而如果内容发生了变化,使用ETag有助于防止资源的同时更新相互覆盖(“空中碰撞”)。
通过md5来识别标识符,版本不变,服务器不需要发完整的响应。
缓存与 304 的区别
缓存没有请求。
304 有请求,有响应,但是响应没有第四部分。
关于上面几个概念的五个面试题目
1. Cookie 和 Session 的区别
- Cookie 保存在客户端,每次都随请求发送给 Server
- Session 保存在 Server 的内存里,其 Session ID 是通过 Cookie 发送给客户端的
2. Cookie 和 LocalStorage 的区别
- LocalStorage 不会随 HTTP 发给 Server
- LocalStorage 的大小限制比 Cookie 大多了
3. LocalStorage 和 SessionStorage 的区别
- LocalStorage 永久有效,除非用户清理缓存
- SessionStorage 在用户关闭页面(会话结束)后就失效
4.Cookie 如何设置过期时间?如何删除 Cookie?
- Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
在 cookie 失效之前需要经过的秒数 - expires 设置时间过期
Expires: Wed, 21 Oct 2015 07:28:00 GMT - 删除 Cookie主要是设置cookie的过期时间,它就自动删除了
5. Cache-Control: max-age=1000 缓存 与 ETag 的「缓存」有什么区别?
- Cache-Control 直接不发请求。
- 而 ETag 要发请求才行。
网友评论