网络协议——状态码及缓存(部分知识点)

面试常见状态码:

状态码 作用
200 请求成功
203 非授权信息
204 无内容返回
206 范围请求成功,返回部分内容
301 永久重定向
302 临时重定向
303 查看其它地址,客户端应采用Get方法请求
304 所请求的资源未修改
400 客户端请求语法错误
401 请求要求用户身份认证
403 服务器拒绝执行此请求
404 无法根据请求找到资源
500 服务器内部错误
501 服务器不支持请求的功能
503 服务器超载,系统维护
504 充当网关或代理的服务器未及时获取请求
505 服务器不支持请求的HTTP协议的版本

主要背以上的状态码即可。
解释304的时候最好加上缓存的概念,能加分。
缓存:
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。
优点:缓解服务器端压力,提升性能(减少网页加载速度),提高用户体验。
浏览器缓存有两种:强缓存和协商缓存。

请求资源时浏览器怎么知道是强缓存还是协商缓存?
用户首次请求并获取到该资源后,根据返回的信息来告诉如何缓存资源,可能采用的是强缓存,也可能告诉客户端浏览器是协商缓存,这都需要根据响应的header内容来决定。

强缓存:
(1)过程
用户请求访问过的资源,浏览器拦截请求,查看该资源的强缓存相关header字段来判断资源是否过期,若未过期即命中强缓存,直接从本地获取资源来展示给用户,若没有命中强缓存,则从服务器重新加载资源或进入协商缓存流程(如果资源同时设置了强缓存和协商缓存)

(2)相关header字段
Expires: 一个未来时间,浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存。

Expires: 
Thu , 15 Apr 2030  20:00:00  GMT  //代表 2030 年4月15日请求过期,在这之前当前请求都有效。

Cache-Control: 当值设为max-age=300时,则代表在这个请求正确返回时间(浏览器也会记录下来)的5分钟内再次加载资源,就会命中强缓存。
(当然还有几个参数,但面试不会这么深入问,只需回答强缓存和协商缓存的用法即可)
注: 同时设置时 cache-control 优先级高于 expires

协商缓存:
用户请求访问过的资源,请求头携带相关header字段去跟服务器的对应相关header字段做对比,由服务器判断资源是否修改,未修改则命中协商缓存,服务器返回304状态码,不返回资源,浏览器获取本地资源。若资源被修改,则返回200状态码并返回新的资源。

强缓存和协商缓存的区别:
强缓存是浏览器(判断是否命中后)单方面做决定是否向服务器发起请求,比较强势,若命中则不会与服务器进行任何通信。而协商缓存是浏览器与服务器(相关字段的校对)双方协商是否返回新资源。
一般将一些不常更新的静态资源设置强缓存加协商缓存,而类似index.html等更新频繁的资源设置为协商缓存。

你可能感兴趣的:(网络协议——状态码及缓存(部分知识点))