Web缓存之浏览器缓存-http缓存
http请求设计
API设计:url中加vn表示版本,节点表示业务、http方法表示动作(GET\POST\PUT\DELETE)、响应码、状态码
拦截器:HttpInterceptor
包括以下功能:身份认证token、统一相应处理、异常解决
Web缓存
数据库缓存、服务端缓存(代理服务器缓存和CDN缓存)、浏览器端缓存、Web应用层缓存
http缓存就是Web缓存中的浏览器端缓存中的基于http协议实现的那一种,也是平时最常见的一种缓存。
http缓存过程
第一次请求第二次请求
强制缓存
expires:服务器返回的到期时间,用在HTTP1.0,存在缓存命中误差。HTTP1.1中用Cache-Control替代
Cache-Control:private客户端缓存,public客户端和代理服务器缓存(对于FEdev,两者无区别)、max-age=xxx缓存内容在xxxs后失效,no-cache对比缓存进行缓存数据验证、no-store不缓存
对比缓存(协商缓存)
Last-Modified:第一次请求时,服务器返回的资源最后修改时间
If-Modified-Since:再次请求时,浏览器通知服务器,上次请求时返回资源最后修改时间
Etag:服务器响应请求时,返回资源唯一标识
If-None-Match:再次请求服务器时,通过此字段通知服务器客户段缓存数据的唯一标识。
强制缓存和对比缓存
缓存对比
对于强制缓存,服务器通知浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行比较缓存策略。
对于比较缓存,将缓存信息中的Etag和Last-Modified通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。
参考资料:
HTTP2简介和web优化
http缓存机制及原理
Angular中优雅编写http请求
Angular7 HttpClient处理多个请求
HttpClient高并发下性能优化-http连接池