美文网首页
Cookie与缓存控制

Cookie与缓存控制

作者: Ga611 | 来源:发表于2019-03-26 11:58 被阅读0次

    Cookie是什么

    “cookie是为了辨别用户身份而储存在用户本地终端(Client Side)上的数据”——wiki
    通俗的理解cookie是一张长期门票,用户持有该门票进入网站便可不必重复验证用户信息

    Cookie有哪些特点

    1. 初次登陆时,服务器通过response.setHeader('set-Cookie',`email=${email}`)
      设置cookie
    2. 浏览器得到cookie后,每次请求都会带上cookie
    3. 服务器读取cookie以得到用户的信息
    4. cookie存在本地文件中
    5. cookie可以被用户手动更改,所以并不安全
    6. cookie有效期可以被后端强制设置
    • 后端如何读取cookie:request.headers.cookie

    set-Cookie有哪些值

    set-Cookie
    • 非完整正规流程展示


      742759705.jpg

    session

    session是基于cookie实现的。在服务器有一块内存中存有sessionId和相应的用户信息。服务器通过set-Cookie不直接将用户信息发送浏览器而将sessionid发给浏览器。当浏览器再次访问服务器时,服务器通过sessionid来找到相应用户信息。

    localStorage

    localStorage是新出的一个API
    它存储相应的信息,作持久化存储,有什么用?
    我希望某些东西在页面中只出现一次,比如一些弹窗,怎么记录这个弹窗已经弹出过?就用localStorage
    怎么用?

    localStorage.setItem('cat','yyh')
    localStorage.getItem('cat')//yyh
    localStorage.removeItem('cat')
    localStorage.clear()
    

    其特点是:

    1. 它与HTTP没有任何关系,HTTP不会带上localStorage的值,一般只由前端控制
    2. 仅有相同域名的页面才能相互读取localStorage的值(没有同源策略那么严格)
      3.每个域名最大存储 5MB左右
    3. 理论上长期有效,除非用户清楚缓存

    cache-control

    cache-control是一个响应头
    怎么设置:response.setHeader('cache-control','max-age=1000000') 以秒为单位
    在设置了这个响应头后,浏览器访问同一个url,就不会在发起请求,转而读取本地缓存。
    因而只要改变url就不会使用缓存,例如给url加一些参数,当版本升级时就可以做到不读取缓存

    expires

    expires也是一个响应头,与cache-control作用一致
    区别是,expires的过期时间是确定的某个时间而不是一段时间
    response.setHeader('expires','Wed, 21 Oct 2015 07:28:00 GMT')

    ETag

    ETag是一个响应头
    当浏览器向服务器请求某个资源时,服务器通过MD5算法,计算一个值,并将该值通过ETag返回给浏览器,当浏览器再次请求这个资源,通过请求头(if-none-match)带上这个值,服务器会将这个值与本地的值对比,如果一样,返回状态码304
    304:not modified 响应没有响应体只有响应头,服务器没法下载响应体只能从本地缓存中读取这个资源
    对比cache-control,依旧是cache-control更好,因为etag会发请求,cache-control连请求都不发,速度更快

    相关文章

      网友评论

          本文标题:Cookie与缓存控制

          本文链接:https://www.haomeiwen.com/subject/zhzyuqtx.html