http状态码
http状态码:是用以表示网页服务器超文本传输协议响应状态的3位数字代码。
当浏览者访问一个网页时,浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
http状态码分类
- 1** 服务器收到请求
- 2** 请求成功,例:200
- 3** 重定向,例:302
- 4** 客户端错误,例:404
- 5** 服务端错误,例:500
常见状态码
- 200—— 成功
- 301——永久重定向(配合location,浏览器自动处理)
- 302——临时重定向
- 304——资源未被修改
- 404——资源未找到
- 403——没有权限
- 500——服务器错误
- 504——网关超时
http的methods
- get——获取数据
- post——新建数据
- patch/put——更新数据
- delete——删除数据
Restful API
REST描述的是在网络中client和server的一种交互的形式,REST不是一种协议本身没有太大的作用,实用的是如何设计 RESTful API(REST风格的接口)
- 一种全新的api设计方法
- 传统api设计:把每个url当做一个功能
- Restful API设计:把每个url当做一个唯一的资源
Request Headers
- Accept :浏览器可接收的数据格式
- Accept-Encoding: 浏览器可接收的压缩算法,如gzip
- Accept-Languange :浏览器可接收的语言,如zh-CN
- Connection:keep-alive 一次TCP连接重复使用
- cookie
- Host
- User-Agent (简称UA)浏览器信息
- Content-stype 发送数据的格式,如application/json
Response Headers
- Content-type 返回的数据格式,如application/json,text/html;charset=utf-8
- Content-length 返回数据的大小,多少字节
- Content-Encoding 返回数据的压缩算法,如gzip
- Set-Cookie
http缓存
- http缓存指的是: 当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源。
- 常见的http缓存只能缓存get请求响应的资源,对于其他类型的响应则无能为力。
- http缓存都是从第二次请求开始的。第一次请求资源时,服务器返回资源,并在respone header头中回传资源的缓存参数;第二次请求时,浏览器判断这些请求参数,命中强缓存就直接200,否则就把请求参数加到request header头中传给服务器,看是否命中协商缓存,命中则返回304,否则服务器会返回新的资源。
缓存的目的
- 减少了冗余的数据传输,节省了网费。
- 缓解了服务器的压力, 大大提高了网站的性能
- 加快网络请求,加快客户端加载网页的速度
哪些资源可以被缓存
- 静态资源(js,css,img)
强制缓存
Cache-Control在Response Headers中,由服务端控制,控制强制缓存的逻辑,例:Cache-Control:max-age =31536000(最大时间)
cache-control的值
- max-age 最大过期时间
- no-cache 不使用本地强制缓存
- no-store 不用本地缓存,也不用服务端的缓存措施
- private 只允许最终用户做缓存,比如电脑,浏览器,手机
- public 允许中间路由,代理做缓存
Expires
- 同在Response Headers中
- 同为控制缓存过期
- 已被Cache-Control代替
协商缓存(对比缓存)
- 服务端缓存策略
- 服务端判断客户端资源,是否和服务端资源一样
- 一致则返回304,否则返回200和最新的资源
资源标识 - 在Response Headers中,有两种
- Last-Modified 资源的最后修改时间
- Etag 资源的唯一标识(一个字符串)
三种刷新操作
-正常操作:地址栏输入url,跳转链接,前进后退等
手动刷新:F5,点击刷新按钮,右击菜单刷新
强制刷新:ctrl+F5
不同书信操作,不同的缓存策略
- 正常操作:强制缓存有效,协商缓存有效
- 手动刷新:强制缓存失效,协商缓存有效
- 强制刷新:强制缓存失效,协商缓存失效