HTTP缓存是一种在客户端和服务器之间缓存资源以提高Web性能和减少网络传输的技术。HTTP缓存方案包括以下几种:
- 强缓存:当客户端发起请求时,先检查缓存中是否有该资源的副本,并根据响应头中的信息判断是否使用缓存。如果命中强缓存,则直接使用缓存,不会向服务器发起请求。
- Expires:使用一个绝对时间来指定缓存的过期时间。
- Cache-Control:通过指定一个相对时间或者一个特定时间来控制缓存。
- 协商缓存:当客户端发起请求时,先向服务器请求该资源,并在请求头中添加一些信息,服务器通过这些信息判断资源是否有更新。如果资源没有更新,则返回一个304 Not Modified响应,让客户端使用缓存。
- Last-Modified / If-Modified-Since:使用资源的最后修改时间来判断资源是否有更新。
- ETag / If-None-Match:使用一个唯一的标识符来判断资源是否有更新。
对于静态资源(如图片、CSS和JavaScript文件等),通常采用强缓存;对于动态资源(如HTML页面),通常采用协商缓存。面试时,需要对HTTP缓存方案的实现原理、优缺点、使用场景以及如何通过HTTP响应头控制缓存进行详细解答