常见http状态码
301永久重定向
302临时重定向
304缓存
400参数错误
401没登录
403登陆了但没有权限
404没有此接口或页面
500 服务器错误
502 网关错误
缓存
1.强制缓存 不会向服务器发请求
html不走强制缓存 内部引用的资源可以强制缓存(js img css)
-
对比缓存
去服务器比较一下是否发生变化服务器给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秒过期
对比缓存
- 根据文件的修改时间 决定是否返回304 让浏览器找缓存
last-modified:文件的最终修改时间
此后的请求中会带上这个时间if-modify-since:时间,然后服务器做对比,如果这个时间和最新的修改时间一样就返回304(缺点:时间变了内容可能没变或者1秒内变化两次) - 根据文件的内容变化 决定是否返回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
缓存总结:有强制,走强制;强制失效,走对比。
网友评论