网络请求相关

常见http状态码

301永久重定向
302临时重定向
304缓存
400参数错误
401没登录
403登陆了但没有权限
404没有此接口或页面
500 服务器错误
502 网关错误

缓存

1.强制缓存 不会向服务器发请求
html不走强制缓存 内部引用的资源可以强制缓存(js img css)

  1. 对比缓存
    去服务器比较一下是否发生变化

    服务器给js等资源设置缓存头


强制缓存 cache-control
1.no-store 每次都请求服务器 但是不存储缓存到浏览器内存
2.no-cache 每次都请求服务器 但是会缓存到浏览器内存中
3.public
4.private
5.max-age

 + 如果设置了no-cache ,请求服务器,服务器返回304 则去缓存中找得到
 + 如果设置了no-store ,请求服务器,服务器返回304 则去缓存中找不到

cache-control(新版浏览器) expires(旧版本浏览器)
cache-control max-age=10 10秒过期
expires new Date(Date.now()+10*1000) 10秒过期


对比缓存

  1. 根据文件的修改时间 决定是否返回304 让浏览器找缓存
    last-modified:文件的最终修改时间
    此后的请求中会带上这个时间if-modify-since:时间,然后服务器做对比,如果这个时间和最新的修改时间一样就返回304(缺点:时间变了内容可能没变或者1秒内变化两次)
  2. 根据文件的内容变化 决定是否返回304 让浏览器找缓存
    node中通过摘要算法crypto生成文件的摘要信息(md5 不可逆的算法称为摘要算法)
    相同的内容生成的摘要相同
  md5 = crypto.createHash('md5').update(value).digest('base64')
  res.setHeader('Etag' ,md5)

之后的请求头中会带上if-none-match 来对比


强制缓存和对比缓存配合使用

+强制缓存 cache-control 设为no-cache
+对比缓存 last-modified:文件的最终修改时间
+Etag

缓存总结:有强制,走强制;强制失效,走对比。

你可能感兴趣的:(网络请求相关)