状态码(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等,获取最新资源)