扫码一下
查看教程更方便
通过复用以前获取的资源,可以显著提高网站和应用程序的性能。Web 缓存减少了等待时间和网络流量,因此减少了显示资源表示形式所需的时间。通过使用 HTTP缓存,变得更加响应性。
HTTP 通常用于分布式信息系统,其中的性能可以通过使用响应缓存来提高。HTTP/1.1 协议包括许多旨在使缓存工作的元素。
HTTP/1.1 中的基本缓存机制是对服务器指定到期时间和验证器的缓存的隐式指令。为此,我们使用Cache-Control标头。
所述Cache-Control头允许客户端或服务器发送各种请求或响应指令。这些指令通常会覆盖默认缓存算法。缓存指令在逗号分隔的列表中指定。例如:
Cache-control: no-cache
客户端可以在其 HTTP 请求中使用以下缓存请求指令:
序号 | 缓存指令 | 描述 |
---|---|---|
1 | no-cache | 如果没有与源服务器成功重新验证,缓存不得使用响应来满足后续请求。 |
2 | no-store | 缓存不应存储有关客户端请求或服务器响应的任何内容。 |
3 | max-age = seconds | 表示客户端愿意接受年龄不大于指定时间(以秒为单位)的响应。 |
4 | max-stale [ = seconds ] | 表示客户端愿意接受超过其过期时间的响应。如果给出秒数,则不得超过该时间。 |
5 | min-fresh = seconds | 表示客户端愿意接受新鲜度生存期不小于其当前年龄加上指定时间(以秒为单位)的响应。 |
6 | no-transform | 不转换实体主体。 |
7 | only-if-cached | 不检索新数据。缓存只有在缓存中才能发送文档,并且不应该联系源服务器以查看是否存在更新的副本。 |
服务器可以在其 HTTP 响应中使用以下缓存响应指令:
序号 | 缓存响应指令 | 描述 |
---|---|---|
1 | public | 表示响应可以被任何缓存缓存。 |
2 | private | 表示响应消息的全部或部分是针对单个用户的,不得由共享缓存进行缓存。 |
3 | no-cache | 如果没有与源服务器成功重新验证,缓存不得使用响应来满足后续请求。 |
4 | no-store | 缓存不应存储有关客户端请求或服务器响应的任何内容。 |
5 | no-transform | 不转换实体主体。 |
6 | must-revalidate | 缓存在使用之前必须验证陈旧文档的状态,不应使用过期文档。 |
7 | proxy-revalidate | proxy-revalidate 指令与 must-revalidate 指令具有相同的含义,只是它不适用于非共享用户代理缓存。 |
8 | max-age = seconds | 表示客户端愿意接受年龄不大于指定时间(以秒为单位)的响应。 |
9 | s-maxage = seconds | 此指令指定的最大年龄覆盖由 max-age 指令或 Expires 标头指定的最大年龄。s-maxage 指令总是被私有缓存忽略。 |