进公园css
背景: 这个公园有一个总公园, 总公园里有许多小公园(总公园是登陆页面, 小公园是域名相同的页面)前端
工做人员检查你的入园是否符合条件(后端查看是不是注册之后的用户)git
经过条件的话工做人员会给你一张票(后端会给你一个响应头, 这个响应头的做用是设置一个 cookie )github
票的内容是只有工做人员才知道是否能够入园的字符串web
你要带上这个票进公园(浏览器会在请求头带上cookie)算法
工做人员看到这个票, 确认里面的内容正确就给你进去(后端看到这个cookie就会让你直接进入登陆后的页面)后端
进公园api
背景: 我是一个坏游客, 我知道什么样的字符串就能够进入公园, 因而我能够伪造假的门票, 工做人员发现了这个问题, 因此工做人员采用更安全的方法来审查门票浏览器
工做人员检查你的入园是否符合条件(后端查看是不是注册之后的用户)缓存
经过条件的话工做人员会给你一张票(后端会给你一个响应头, 这个响应头的做用是设置一个 cookie , cookie 的值是一个随机数)
而且工做人员把票的字符串和你的名字写到一张表里(后端设置一个session, 保存在服务器内存中, session的内容是以前的随机数对应你的用户信息)
票的内容是只有工做人员才知道是否能够入园的字符串
你要带上这个票进公园(浏览器会在请求头带上cookie)
工做人员看到这个票, 经过判断票的字符串是否和表的字符串匹配, 若是匹配,那么说明能够进入(后端拿到请求内容的cookie的随机数, 会和sessions的内容进行比对, 看请求的cookie的随机数有没有在sessions上出现,若是出现了, 就会让你进入登陆后的页面)
localStorage.setItem("xxx", "yyy")
若是 yyy 是对象, 那么要用 JSON 转一下再存储
localStorage.getItem("xxx")
localStorage.clear()
4,5,6,7同上
9不一样: 在用户关闭页面(会话结束)后就失效 === 关闭页面
未完成
那么在第二次浏览器想请求一样的大文件AA时, 服务器发现了, 直接不产生 HTTP 请求,
浏览器直接在本地内存拿到大文件AA
在实际工做中, 入口文件(通常是index)不设置Cache-Control, 其余的文件都设置Cache-Control, 时间越长越好
首页不能设置Cache-Control的缘由
www.baidu.com
, 那么首页在一天的时间内都不能得到最新的版本, 也能够理解为没有接口去更新页面了, 由于全部的路口都封锁了这是原来的: <script src="./js/main.js">
这是如今的: <script src="./js/main.js?v=1">
Wed, 21 Oct 2015 07:28:00 GMT
, 而用户有可能把本地的时间弄错, 因此如今都使用 Cache-ControlMD5是一种摘要算法, 用于确认信息传输是否一致
如你下载一部电影, 网上的电影的文件对应一个MD5值,
你下载电影后, 本地的电影也对应一个MD5值
两个MD5值若是彻底相同,就说明确实是一个文件了
特色: 若是两个文件内容越类似, 那么两个MD5的值差别越大
那么前端在从新请求这个文件的时候,请求内容就会带上if-None-Match: MDXXXXXXX
这个请求头
后端发现请求内容的if-None-Match: MDXXXXXXX
和服务器中相应文件的MD5相同, 那么后端知道这个文件不须要下载
给前端的响应内容没有第四部分,只有第一和第二部分, 而且返回的状态码是304
Cache-Control直接不请求, Etag直接不下载(要请求)
更多文章在个人github上