http协议基础知识

状态码(status code)

1XX:服务器收到请求

2XX:请求成功,如200

3XX:重定向,如301(永久重定向,配合location,浏览器自动处理)、302(临时重定向,配合location,浏览器自动处理)、304资源未被修改

4XX:客户端错误,如404(资源未找到)、403(没有权限)

5XX:服务端错误,如500(服务器错误)、504(网关超时)

http methods(规范方法)

传统的methods:get获取服务器数据,post向服务器提交数据

现在的methods:get获取数据、post新建数据、patch/put更新数据、delete删除数据

restful api(尽量不适用url参数,用method表示操作类型):

一种新的api设计方法(早已推广使用)

传统api设计:把每个url当作一个功能

Restful API设计:把每个url当做一个唯一的资源

Restful API遵守

(1)尽量不适用url参数

  传统:/api/list?pageNum=2

  restfulAPI:/api/list/2

(2)用method表示操作类型

  传统:post请求 /api/create-blog

             post请求 /api/update-blog?id=100

             get请求/api/get-blog?id=100

  restfulAPI:post请求/api/blog

                     patch请求/api/blog/100

                     get请求/api/blog/100

http headers(request headers和response headers)

request headers:

Accept:浏览器可接收的数据格式

Accept-Encoding:浏览器可接收的压缩算法,如gzip

Accept-Languange:浏览器可接收的语言,如zh-CN

Connection:keep-alive一次TCP连接可重复使用

cookie

host:请求的本地域名

User-Agent(简称UA)浏览器信息

Content-type发送数据格式,如application/json

response headers:

Content-type 返回数据的格式,如application/json

Content-length 返回数据的大小,多少字节

Content-Encoding 返回数据的压缩算法,如gzip

Set-Cookie:服务器端更改的cookie

缓存相关的headers:

Cache-Control  Expires

Last-Modified  If-Modified-Since

Etag  If-None-Match

http缓存(通常是缓存一些js css img等的静态资源)

减少请求的数量和体积,提升前端性能

http缓存策略(强制缓存+协商缓存)

强制缓存:本地缓存策略,初次加载,如果服务器端认为资源可以被缓存,返回Cache-Control:max-age = 31536000(单位是秒,这里时间写的一年,具体看情况设定就行)。再次请求,浏览器判断Cache-Control未过期,不再发送请求,直接在本地寻找资源。过期的话则再次请求服务器。

协商缓存:服务器端缓存策略,服务器判断客户端资源是否和服务端一样。一致则返回304资源未被修改,否则返回200和最新的资源。

协商缓存具体的判断过程:浏览器初次请求,服务器端返回资源和资源标识,浏览器保存。浏览器再次请求,带着资源标识,服务器判断资源标识未发生改变,返回304.发生改变则返回资源和新的资源标识

资源标识:

Last-Modified:在Response Headers中,由服务器返回,资源最后修改时间。对应的判断标识是Request Headers中的If-Modified-Since(值等同于Last-Modified,只不过是由客户端发起的校验值)

Etag:资源的唯一标识(一个字符串,类似于人类的指纹),对应的判断标识是Request Headers中的If-None-Match(值等同于Etag,只不过是由客户端发起的校验值)

Last-Modified与Etag优先使用Etag,因为Last-Modified只能精确到秒级,且如果资源被重复生成,内容不变,Etag更精确

Cache-Control的值:max-age最大缓存有效时间,no-cache不用强制缓存,接受服务端的缓存策略(如协商缓存)。no-store:不用本地强制缓存,也不接受服务端缓存,每次请求都是正常的无缓存请求。private:只允许最终用户做缓存。public:在private的基础上也可以对路由、代理等做缓存。

Expires:同在Response Headers中,同为控制缓存过期,已被Cache-Control代替

刷新操作方式对缓存的影响

正常操作:强制缓存有效,协商缓存有效(输入url,跳转链接,前进后退等)

手动刷新:强制缓存失效,协商缓存有效(F5,点击刷新按钮,右击菜单刷新)

强制刷新:强制缓存失效,协商缓存失效(ctrl+F5等,获取最新资源)

你可能感兴趣的:(http协议基础知识)