http
- http常用状态码有哪些?
见知识点-状态码 - http常见的header有哪些?
见知识点-http headers - 什么是Restful API?
见知识点-http methods - 描述一下http的缓存机制(重要)
见知识点http缓存
知识点
-
状态码
- 状态码分类
1xx 服务器收到请求
2xx 请求成功
3xx 资源重定向
4xx 客户端错误
5xx 服务端错误 - 常见状态码
200 成功
301 永久重定向(浏览器自动处理)
302 临时重定向(浏览器自动处理)
304 资源未改变(使用浏览器缓存)
404 资源未找到
403 没有权限
500 服务器错误
504 网关超时 - 关于协议和规范
这个协议就是一个一个规定,不要违反协议,例如IE
- 状态码分类
-
http methods
- 传统的method:
get 获取服务器数据
post 向服务器提交数据 - 现在的method:
get 获取数据
post 新建数据
put/patch 更新数据
delete 删除数据
- 传统的method:
-
Restful API
- 一种新的API设计方法
- 缺点:无法批量查询
restful API设计之初时将URL当作一个唯一资源,所以根据URL无法进行批量查询 - 传统的API设计:把每个URL当作一个功能
- Restful API设计:把每个URL当作唯一的资源
设计原则:- 尽量不用URL参数:/api/list?page=2 => /api/list/2
- 用method表示操作类型:/api/update_blog?id=100(post请求) => /api/blog/100(patch请求)
-
http headers
- Request Headers:
Accept 浏览器可接收的数据格式
Accept-Encoding 浏览器可接收的压缩算法,如gzip
Accept-Languange 浏览器可接收的语言
Connection:keep-alive 一次TCP连接重复使用
Cookie
Host 请求的域名
User-Agent 浏览器信息
Content-Type 发送数据的格式 - Response Headers:
Content-Type 返回数据的格式
Content-Length 返回数据的大小
Content-Encoding 返回数据的压缩算法
Set-Cookie 服务端修改cookie - 自定义Header
Authorization 权限验证的header - 缓存相关的Header
Cache-Control Expires
Last-Modified If-Modified-Since
Etag If-None-Match
- Request Headers:
-
http缓存
- 缓存介绍:
缓存就是让同一份资源不再发起请求,降低网络压力和资源数量,从而让网页加载更快。
网络请求不稳定加剧了网页加载的不稳定性,所以需要缓存。
一般来说,js、css、img等静态资源可以被缓存 - http缓存策略:
-
强制缓存(Cache-Control)
cache-control在response-headers中,用于对缓存资源的控制,该属性可以控制强制缓存的逻辑,例如:Cache-Control: max-age=31536000(单位是秒)。
当再次请求时,先检查过期与否,若没有过期,则直接从缓存里拿数据,反之再次向服务器请求
Cache-Control的值:- max-age
- no-cache(不用本地缓存)
- no-store(不用本地和服务端的缓存)
在现代浏览器中兼容Expires和Cache-Control,不过优先使用Cache-Control
-
协商缓存(对比缓存)
协商缓存是服务端缓存策略(服务端判断该资源能否被缓存,而不是资源缓存在服务端),判断依据是客户端和服务端的资源标识是否一样,若一样则返回304,否则返回200和最新的资源、资源标识(资源标识在response headers中)
资源标识:
Last-Modified(客户端再次请求时,request headers带着if-Modified-Since) 资源的最后修改时间Etag 资源的唯一标识(客户端再次请求时,request headers带着if-None-Match)(一个字符串)
当两种资源标识共同存在时,优先使用Etag,因为Last-Modified只能精确到秒级,而Etag唯一
- 刷新操作方式,对缓存的影响:
- 正常操作:地址栏输入URL,跳转链接,前进后退等,强制缓存和协商缓存均有效
- 手动刷新:F5,点击刷新按钮,右键菜单刷新,强制缓存失效,协商缓存有效
- 强制刷新:ctrl+F5,强制缓存和协商缓存均无效
- 缓存介绍: