参考牛客前端面经整理的~
一、HTTP 缓存策略
浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本 地缓存。如果缓存有效,则使用本地缓存;否则,则向服务器发起请求并携带缓存标识。
根据是否需向服务器发起HTTP请求,将缓存过程划分为两个部分: 强制缓存和协商缓存,强缓优先于协商缓存。
强缓存:服务器通知浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时 间内,执行比较缓存策略。
协商缓存:让客户端与服务器之间能实现缓存文件是否更新的验证、提升缓存的复用率,将 缓存信息中的 Etag 和 Last-Modified 通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。
HTTP缓存都是从第二次请求开始的:
第一次请求资源时,服务器返回资源,并在 response header 中回传资源的缓存策略; 第二次请求时,浏览器判断这些请求参数,击中强缓存就直接返回 200,否则就把请求参数加到 request header 头中传给服务器,看是否击中协商缓存,击中则返回304,否则服务器会返回新的资源。这是缓存运作的一个整体流程图:
二、强缓存
强缓存命中则直接读取浏览器本地的资源,在 network 中显示的是 from memory