面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!
目录
节流
什么是HTTP缓存?
答:当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源。
HTTP缓存的类型?
答:
强缓存:缓存数据未失效的情况下(即Cache-Control的max-age没有过期或者Expires的
缓存时间没有过期),那么就会直接使用浏览器的缓存数据,不会再向服务器发送任何请求。
状态码:200。
expires:缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点。
Cache-Control: 设置缓存字段
无效:Ctrl + F5
协商缓存:和服务器协商确认下这个缓存能不能用。
状态码:304
Last-Modified/If-Modified-Since(资源是否更新过)
ETag/If-None-Match(资源是否更新过)
面试大白话
答:强制缓存由 Cache-Control,Exipres管制。浏览器间接读本地缓存,不会再跟服务器端交互,状态码 200。
协商缓存由 Last-Modified / IfModified-Since, Etag /If-None-Match实现,每次申请须要让服务器判断一下资源是否更新过,从而决定浏览器是否应用缓存,如果是,则返回 304,否则从新残缺响应。