首先这个问题是http的缓存,我答了强缓存和协商缓存。
我说道协商缓存,是会请求到后端服务器,然后对比响应头last-modified或者etag,来决定时候使用缓存。
此时面试官问我,已经请求到后端了,为什么还要再去取缓存,而不是直接使用response,我就没答出来。
网上搜了很多,主要还是都是介绍2种缓存的,并没有提到这个问题,望解答!
首先这个问题是http的缓存,我答了强缓存和协商缓存。
我说道协商缓存,是会请求到后端服务器,然后对比响应头last-modified或者etag,来决定时候使用缓存。
此时面试官问我,已经请求到后端了,为什么还要再去取缓存,而不是直接使用response,我就没答出来。
网上搜了很多,主要还是都是介绍2种缓存的,并没有提到这个问题,望解答!
某些情况下网络开销,可以忽略不计,带着etag这类标记的request, 服务端可以主动判断 response 是否已经到期或者失效, 才 lazy 地进行计算。
相对于每次进行 100% 的计算, 采用协商缓存可以用每次仅仅进行 1% 或者更低的开销,加速用户端体验和整体开销。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
我猜你说的 response 指的是 response body?
协商缓存如果命中返回的是 304 啊……只有 header 没有 body。
虽然还是请求了一次服务器,但只需要传输 header 部分就可以了,节省了传输文件本身的开销。