通过复用以前获取的资源,可以显著提高网站和应用程序的性能。Web缓存减少了等待时间和网络流量,因此减少了显示资源表示形式所需的时间。通过使用HTTP缓存,变得更加响应性。
不同种类的缓存
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当web缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源资源服务器重新下载。这样带来的好处有:缓解服务器端压力,提升性能(获取资源的耗时更短了)。对于网站来说,缓存是达到高性能的重要组成部分。缓存需要合理配置,因为并不是所有资源都是永久不变的:重要的是对一个资源的缓存应截止到其下一次发生改变(即不能缓存过期的资源)。
缓存的种类有很多,其大致可以归为两类:私有与共享缓存。共享缓存存储的响应能够被多个用户使用。私有缓存只能用于单独用户。本文将主要介绍浏览器与代理缓存,除此之外还有网关缓存、CDN、反向代理缓存和负载均衡器等部署在服务器上的缓存方式,为站点和web应用提供更好的稳定性、性能、和扩展性。
![45b4af144fdef222c150dc664565cb42.png](https://img-blog.csdnimg.cn/img_convert/45b4af144fdef222c150dc664565cb42.png)
(私有)浏览器缓存
私有缓存只能用于单独用户。你可能已经见过浏览器中设置中的“缓存“选项。浏览器缓存拥有用户通过HTTP下载的所有文档。这些缓存为浏览过的文档提供向前/向后导航,保存网页,查看源码等功能,可以避免再次向服务器发起多余的请求。它同样可以提供缓存内容的离线浏览。
(共享)代理缓存
共享缓存可以被多个用户使用。例如,ISP或你所在公司可能会架设一个web代理来作为本地网络基础的一部分提供给用户,这样热门的资源就会被重复使用,减少网络拥堵与延迟。
缓存操作的目标
虽然HTTP缓存不是必需的,但重用缓存的资源通常是必要的。然而常见的HTTP缓存只能存储GET响应,对于其他类型的响应则无能为力。缓存的关键主要包括request method和目标URI(一般只有GET请求才会被缓存)。普遍的缓存案例:
- 一个检索请求的成功响应:对于GET请求,响应状态码为200,则表示成功。一个包含例如HTML文档