HTTP的Cache-Control头部有哪些取值?

  • Post category:Python

HTTP协议提供了一系列优化性能的技术,其中一个就是通过Cache-Control头部来控制缓存。Cache-Control头部可以用于控制客户端和服务器对缓存的处理行为。在这篇攻略中,我们将详细讲解HTTP的Cache-Control头部的所有取值。

1. Cache-Control头部的基本语法

以下是Cache-Control头部的基本语法:

Cache-Control: <directive1>, <directive2>, ... <directiveN>

directive是Cache-Control头部中可用的指令:

2. Cache-Control头部的指令

以下是Cache-Control头部可用的指令:

  • max-age: 定义缓存对象在被认为陈旧之前的最大时间(以秒为单位)。

例如:为了让某个资源在客户端缓存30秒,可以使用以下语法:

Cache-Control: max-age=30
  • no-cache: 强制客户端和代理服务器在使用所请求的资源之前验证缓存。

例如:如果想要确保客户端和代理服务器始终获取最新的版本,可以使用以下语法:

Cache-Control: no-cache
  • no-store: 禁止缓存的存储,每次用户请求时都必须重新请求资源。

例如:如果想要禁止缓存,可以使用以下语法:

Cache-Control: no-store
  • public: 允许任何缓存服务器缓存返回的响应。

例如:如果想要向所有客户端提供允许缓存的版本,可以使用以下语法:

Cache-Control: public
  • private: 指示该响应是专用于单个用户,缓存公共副本不受允许。

例如:如果想要禁止代理服务器缓存响应,可以使用以下语法:

Cache-Control: private
  • must-revalidate: 强制客户端和服务器在使用所请求的资源之前验证缓存。

例如:如果想要确保客户端和服务器在使用缓存中的资源之前先验证缓存的有效性,可以使用以下语法:

Cache-Control: must-revalidate
  • max-stale: 定义缓存对象即使陈旧可以被认为是可接受的时间。

例如:如果想要允许客户端使用5分钟或更旧的响应,可以使用以下语法:

Cache-Control: max-stale=300
  • min-fresh: 定义客户端愿意接受的响应的最小时间(以秒为单位)。

例如:如果想要仅接受被视为新鲜的响应,可以使用以下语法:

Cache-Control: min-fresh=60
  • no-transform: 禁止代理更改响应的媒体类型。

例如:如果想要禁止代理更改响应的媒体类型,可以使用以下语法:

Cache-Control: no-transform

3. 总结

在本文中,我们讲解了HTTP的Cache-Control头部的所有指令,并提供了每条指令的用例示例。使用Cache-Control头部,可以通过设置不同的指令来优化HTTP的性能。