- http 常见的状态码有哪些?
状态码分类:
1xx 服务器收到请求
2xx 请求成功
3xx 重定向
4xx 客户端错误
5xx 服务端错误
常见状态码:
200 成功, 301永久重定向, 302临时重定向,304资源未被修改(走缓存)
404资源未找到,403没有权限,500服务器错误,504网关超时
关于协议和规范:就是一个约定,跟着执行,不要违反规范
-http methods
传统methods:get获取数据,post提交数据
现在的methods:get获取数据、post新建数据、patch/put更新数据、delete删除数据
- 常见的header
- request headers
Accept 浏览器可接收的数据格式
Accept-Encoding 浏览器可接收的压缩算法,如gzip
Accept-language
Connection:keep-alive 一次TCP连接重复使用
Cookie
Host
User-Agent浏览器信息
Content-type 发送数据的格式,如application/json - respons headers
Content-type
content-length 返回数据大小
content-Encoding 返回数据压缩算法 ,如gzip
set-cookie
cache-control 相关缓存 - 自定义header
headers:{"...":"..."}
- restful API
一种新的api设计方法(早已推广使用)
传统API设计:把每个url当做一个功能
restful:把每个url当做唯一的资源
尽量不使用url参数
如:
传统api:/api/list?pageIndex=2 ,使用methods表示操作类型
restful:api/list/2
post请求 /api/blog 创建一个blog
patch请求 /api/blog/100 更新一个blog100
get请求 /api/blog/100 获取blog100
- 描述一下http缓存机制
- 关于缓存
哪些资源可以被缓存? 静态资源(js,css,img)。html不可以!因为经常被替换模板。webpack中contentHash 计算文件中若有改变则改变hash的值 - 缓存策略
- 强制缓存:
初次请求,response headers 中通过cache-control控制强制缓存的逻辑
再次请求,浏览器会在本地缓存里找
max-age 过期时间
no-cache 不用本地强制缓存
no-store 即不用本地缓存也不用服务端缓存
private 只允许最终用户做缓存
public 允许中间代理做缓存
expires:已经被catch-control代替 - 协商缓存(对比缓存)
服务端缓存策略,由服务端来判断一个资源是否被缓存
服务端判断客户端资源,是否和服务端资源一样一致则返回304,否则返回200和最新的资源
资源标识:
在response headers中 有两种
last-modified资源的最后修改时间
etag资源的唯一标识,类似于人的指纹
优先使用etag
last-modified 只能精确到秒
资源被重复生成,而内容不变,则etag更精准
- 刷新操作方式,对缓存的影响
正常操作:强制缓存有效,协商缓存有效
手动刷新:强制缓存失效,协商缓存有效
强制刷新:全部失效
从输入url到页面加载完成发生了什么?
1、浏览器的地址栏输入URL并按下回车。
2、浏览器查找当前URL是否存在缓存,并比较缓存是否过期。
3、DNS解析URL对应的IP。
4、根据IP建立TCP连接(三次握手)。
5、HTTP发起请求。
6、服务器处理请求,浏览器接收HTTP响应。
7、渲染页面,构建DOM树。
8、关闭TCP连接(四次挥手)