<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 模块

Apache 模块 mod_cache

可用语言:  en  |  fr  |  ja  |  ko 

描述符合 RFC 2616 的 HTTP 缓存过滤器。
状态扩展
模块标识符cache_module
源文件mod_cache.c

摘要

使用此模块时应谨慎,因为当 CacheQuickHandler 指令处于其默认值 on 时,AllowDeny 指令将被绕过。您不应为任何您希望通过客户端主机名、地址或环境变量限制访问的内容启用快速处理程序缓存。

mod_cache 实现了一个符合 RFC 2616HTTP 内容缓存过滤器,支持缓存包含 Vary 标头的协商内容响应。

符合 RFC 2616 的缓存提供了一种机制来验证陈旧或过期的内容是否仍然新鲜,并且当源服务器通过遵守 If-None-Match HTTP 请求头来支持 条件请求 时,可以显着提高性能。只有在内容发生更改时才会从头开始重新生成内容,而不会在缓存条目过期时重新生成。

作为过滤器,mod_cache 可以放置在来自任何处理程序的内容前面,包括 平面文件(从慢速磁盘缓存到快速磁盘)、CGI 脚本动态内容生成器 的输出,或从 另一个服务器代理 的内容。

在默认配置中,mod_cache 将缓存过滤器尽可能地插入到过滤器堆栈中,利用 快速处理程序 在将内容返回给客户端时绕过所有每个请求处理。在这种操作模式下,mod_cache 可以被认为是安装在 Web 服务器前面的缓存代理服务器,同时在 Web 服务器本身内运行。

当使用 CacheQuickHandler 指令关闭快速处理程序时,就可以将 CACHE 过滤器插入到管理员选择的过滤器堆栈中的某个位置。这提供了在内容被 mod_include 过滤器个性化之前或可选地被 mod_deflate 过滤器压缩之前缓存内容的机会。

在正常操作下,mod_cache 将响应并可以被来自客户端请求中的 Cache-ControlPragma 标头或来自响应中的服务器控制。在特殊情况下,mod_cache 可以配置为覆盖这些标头并强制执行特定于站点的行为,但是这种行为将仅限于此缓存,并且不会影响可能存在于客户端和服务器之间的其他缓存的操作,因此不建议除非绝对必要。

RFC 2616 允许缓存返回陈旧数据,同时从源服务器刷新现有的陈旧条目,并且当 CacheLock 指令配置适当时,mod_cache 支持这一点。此类响应将包含一个带有 110 响应代码的 Warning HTTP 标头。RFC 2616 还允许缓存返回陈旧数据,当尝试刷新陈旧数据返回错误 500 或更高时,这种行为默认情况下由 mod_cache 支持。此类响应将包含一个带有 111 响应代码的 Warning HTTP 标头。

mod_cache 需要一个或多个存储管理模块的服务。以下存储管理模块包含在基本 Apache 发行版中

mod_cache_disk
实现基于磁盘的存储管理器。标头和主体分别存储在磁盘上,在从缓存 URL 的 md5 哈希派生的目录结构中。可以同时存储多个协商内容响应,但是此模块不支持部分内容的缓存。提供了 htcacheclean 工具来列出缓存的 URL、删除缓存的 URL 或在大小和 inode 限制内维护磁盘缓存的大小。
mod_cache_socache
实现基于共享对象缓存的存储管理器。标头和主体一起存储在基于要缓存的响应的 URL 的单个键下。可以同时存储多个协商内容响应,但是此模块不支持部分内容的缓存。

更多详细信息、讨论和示例,请参阅 缓存指南

Support Apache!

主题

指令

错误修复清单

另请参阅

top

相关模块和指令

top

示例配置

示例 httpd.conf

#
# Sample Cache Configuration
#
LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
    LoadModule cache_disk_module modules/mod_cache_disk.so
    <IfModule mod_cache_disk.c>
        CacheRoot "c:/cacheroot"
        CacheEnable disk  "/"
        CacheDirLevels 5
        CacheDirLength 3
    </IfModule>

    # When acting as a proxy, don't cache the list of security updates
    CacheDisable "http://security.update.server/update-list/"
</IfModule>
top

避免雷鸣般的羊群

当缓存条目变得陈旧时,mod_cache 将向后端提交一个条件请求,该请求预计将确认缓存条目是否仍然新鲜,如果未更新,则发送更新的实体。

在缓存实体变得陈旧的时间和陈旧实体完全刷新的时间之间存在一小段时间。在繁忙的服务器上,在此期间可能会收到大量请求,并导致 雷鸣般的羊群 请求突然且不可预测地攻击后端。

为了控制雷鸣般的羊群,可以使用 CacheLock 指令来定义一个目录,在该目录中为 正在进行 的 URL 创建锁。锁用作其他请求的 提示,以抑制缓存尝试(其他人已经去获取实体),或者指示正在刷新陈旧条目(同时将返回陈旧内容)。

条目的初始缓存

当实体首次被缓存时,将为该实体创建一个锁,直到响应被完全缓存。在锁的生命周期内,缓存将抑制对同一实体的第二次及后续缓存尝试。虽然这不会阻止雷鸣般的羊群,但它确实会阻止缓存同时尝试多次缓存同一实体。

陈旧条目的刷新

当实体达到其新鲜度生命周期并变得陈旧时,将为该实体创建一个锁,直到响应被确认仍然新鲜,或者被后端替换。在锁的生命周期内,第二次及后续传入请求将导致返回陈旧数据,并且雷鸣般的羊群将被控制。

锁和 Cache-Control: no-cache

锁仅用作 提示,以使缓存对后端服务器更加温和,但是如果需要,可以覆盖锁。如果客户端发送带有 Cache-Control 标头的请求,强制重新加载,则任何可能存在的锁都将被忽略,并且将立即满足客户端的请求,并刷新缓存条目。

作为额外的安全机制,锁具有可配置的最大年龄。一旦达到此年龄,锁将被移除,并且新的请求将有机会创建新的锁。此最大年龄可以使用 CacheLockMaxAge 指令设置,默认值为 5 秒。

示例配置

启用缓存锁

#
# Enable the cache lock
#
<IfModule mod_cache.c>
    CacheLock on
    CacheLockPath "/tmp/mod_cache-lock"
    CacheLockMaxAge 5
</IfModule>
top

使用 CACHE 过滤器进行精细控制

在默认的缓存操作模式下,缓存作为快速处理程序运行,简化了大部分服务器处理,并提供了可用的最高缓存性能。

在此模式下,缓存 **直接连接到** 服务器的前端,就像在服务器前面放置了一个独立的 RFC 2616 缓存代理一样。

虽然此模式提供了最佳性能,但管理员可能会发现,在某些情况下,他们可能希望在请求被缓存后对请求进行进一步处理,例如将个性化内容注入到缓存的页面中,或对内容应用授权限制。在这种情况下,管理员通常被迫在缓存服务器的后面或前面放置独立的反向代理服务器来实现这一点。

为了解决这个问题,可以将 CacheQuickHandler 指令设置为 **off**,服务器将正常处理非缓存请求处理的所有阶段,包括 **身份验证和授权** 阶段。

此外,管理员可以选择通过将 **CACHE** 过滤器添加到输出过滤器链中来指定 **过滤器链中缓存发生的精确位置**。

例如,要在对响应应用压缩之前缓存内容,请将 **CACHE** 过滤器放在 **DEFLATE** 过滤器之前,如下例所示

# Cache content before optional compression
CacheQuickHandler off
AddOutputFilterByType CACHE;DEFLATE text/plain

另一个选择是在 mod_include(或其他内容处理过滤器)应用个性化之前缓存内容。在此示例中,包含 mod_include 识别的标签的模板在解析之前被缓存

# Cache content before mod_include and mod_deflate
CacheQuickHandler off
AddOutputFilterByType CACHE;INCLUDES;DEFLATE text/html

您可以在过滤器链中的任何位置放置 **CACHE** 过滤器。在此示例中,内容在被 mod_include 解析后被缓存,但在被 mod_deflate 处理之前。

# Cache content between mod_include and mod_deflate
CacheQuickHandler off
AddOutputFilterByType INCLUDES;CACHE;DEFLATE text/html

警告

如果出于任何原因更改了过滤器链中 **CACHE** 过滤器的位置,您可能需要 **刷新缓存** 以确保提供的数据保持一致。 mod_cache 无法为您执行此操作。
top

缓存状态和日志记录

一旦 mod_cache 决定是否要从缓存中提供实体,该决定的详细原因将写入请求中的子进程环境中的 **cache-status** 键下。此原因可以使用 LogFormat 指令记录,如下所示

LogFormat "%{cache-status}e ..."

根据做出的缓存决策,原因也会写入子进程环境中的以下四个键之一,具体取决于情况

cache-hit
响应是从缓存中提供的。
cache-revalidate
响应已过期,并已成功重新验证,然后从缓存中提供。
cache-miss
响应是从上游服务器提供的。
cache-invalidate
缓存的实体被除 GET 或 HEAD 之外的请求方法无效化。

这使得可以根据以下示例支持对缓存请求的条件日志记录

CustomLog "cached-requests.log" common env=cache-hit
CustomLog "uncached-requests.log" common env=cache-miss
CustomLog "revalidated-requests.log" common env=cache-revalidate
CustomLog "invalidated-requests.log" common env=cache-invalidate

对于模块作者,可以使用名为 cache_status 的钩子,允许模块以自定义方式响应上述缓存结果。

top

CacheDefaultExpire 指令

描述当未指定过期日期时,缓存文档的默认持续时间。
语法CacheDefaultExpire seconds
默认CacheDefaultExpire 3600(一小时)
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

CacheDefaultExpire 指令指定一个默认时间(以秒为单位),用于缓存文档,前提是文档未提供过期日期或最后修改日期。使用 CacheMaxExpire 指令指定的 value 不会覆盖此设置。

CacheDefaultExpire 86400
top

CacheDetailHeader 指令

描述在响应中添加 X-Cache-Detail 标头。
语法CacheDetailHeader on|off
默认CacheDetailHeader off
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache
兼容性在 Apache 2.3.9 及更高版本中可用

CacheDetailHeader 指令打开时,将在响应中添加一个 **X-Cache-Detail** 标头,其中包含特定缓存决策的详细原因。

在开发缓存的 RESTful 服务期间,将有关缓存决策的附加信息写入响应标头可能很有用,以确认服务和客户端是否已正确使用 Cache-Control 和其他标头。

如果使用正常处理程序,此指令可能会出现在 <Directory><Location> 指令中。如果使用快速处理程序,此指令必须出现在服务器或虚拟主机上下文中,否则设置将被忽略。

# Enable the X-Cache-Detail header
CacheDetailHeader on

X-Cache-Detail: "conditional cache hit: entity refreshed" from localhost

top

CacheDisable 指令

描述禁用指定 URL 的缓存
语法CacheDisable url-string | on
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

CacheDisable 指令指示 mod_cache *不要* 缓存 url-string 及其以下的 URL。

示例

CacheDisable "/local_files"

如果在 <Location> 指令中使用,则需要在 Location 以下指定路径,或者如果使用“on”一词,则将禁用整个位置的缓存。

示例

<Location "/foo">
    CacheDisable on
</Location>

在 2.2.12 及更高版本中,可以使用 no-cache 环境变量来禁用更细粒度的资源集的缓存。

另请参阅

top

CacheEnable 指令

描述使用指定的存储管理器启用指定 URL 的缓存
语法CacheEnable cache_type [url-string]
上下文服务器配置、虚拟主机、目录
状态扩展
模块mod_cache
兼容性在 2.2 及更早版本中,应用于转发代理内容的 '/' URL 字符串。

CacheEnable 指令指示 mod_cache 缓存 url-string 及其以下的 URL。缓存存储管理器使用 cache_type 参数指定。 CacheEnable 指令也可以放在 <Location><LocationMatch> 部分中,以指示内容是可缓存的。 cache_type disk 指示 mod_cache 使用由 mod_cache_disk 实现的基于磁盘的存储管理器。 cache_type socache 指示 mod_cache 使用由 mod_cache_socache 实现的基于共享对象缓存的存储管理器。

如果不同的 CacheEnable 指令之间的 URL 空间重叠(如以下示例所示),则将运行每个可能的存储管理器,直到第一个实际处理请求的存储管理器为止。存储管理器运行的顺序由配置文件中 CacheEnable 指令的顺序决定。 CacheEnable 指令在 <Location><LocationMatch> 部分中处理,优先于全局定义的 CacheEnable 指令。

在充当转发代理服务器时,url-string 必须至少以应启用缓存的协议开头。

# Cache content (normal handler only)
CacheQuickHandler off
<Location "/foo">
    CacheEnable disk
</Location>

# Cache regex (normal handler only)
CacheQuickHandler off
<LocationMatch "foo$">
    CacheEnable disk
</LocationMatch>

# Cache all but forward proxy url's (normal or quick handler)
CacheEnable  disk  /

# Cache FTP-proxied url's (normal or quick handler)
CacheEnable  disk  ftp://

# Cache forward proxy content from www.example.org (normal or quick handler)
CacheEnable  disk  http://www.example.org/

以 **"*"** 开头的主机名匹配所有以该后缀结尾的主机名。以 **"."** 开头的主机名匹配包含以下域名组件的所有主机名。

# Match www.example.org, and fooexample.org
CacheEnable  disk  "http://*example.org/"
# Match www.example.org, but not fooexample.org
CacheEnable  disk  "http://.example.org/"

在 2.2.12 及更高版本中,可以使用 no-cache 环境变量来禁用更细粒度的资源集的缓存。

另请参阅

top

CacheHeader 指令

描述在响应中添加 X-Cache 标头。
语法CacheHeader on|off
默认CacheHeader off
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache
兼容性在 Apache 2.3.9 及更高版本中可用

CacheHeader 指令打开时,将在响应中添加一个 **X-Cache** 标头,其中包含此响应的缓存状态。如果使用正常处理程序,此指令可能会出现在 <Directory><Location> 指令中。如果使用快速处理程序,此指令必须出现在服务器或虚拟主机上下文中,否则设置将被忽略。

HIT
实体是新鲜的,并且是从缓存中提供的。
REVALIDATE
实体已过期,已成功重新验证,并已从缓存中提供。
MISS
实体是从上游服务器获取的,并且未从缓存中提供。
# Enable the X-Cache header
CacheHeader on
X-Cache: HIT from localhost
top

CacheIgnoreCacheControl 指令

描述忽略不要将缓存内容提供给客户端的请求
语法CacheIgnoreCacheControl On|Off
默认CacheIgnoreCacheControl Off
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache

通常,包含 Cache-Control: no-cache 或 Pragma: no-cache 标头值的请求不会从缓存中提供。 CacheIgnoreCacheControl 指令允许覆盖此行为。 CacheIgnoreCacheControl On 告诉服务器尝试从缓存中提供资源,即使请求包含 no-cache 标头值。需要授权的资源 *永远不会* 被缓存。

CacheIgnoreCacheControl On

警告

此指令将允许从缓存中提供,即使客户端已请求不要从缓存中提供文档。这可能会导致提供陈旧的内容。

另请参阅

top

CacheIgnoreHeaders 指令

描述不要将给定的 HTTP 标头存储在缓存中。
语法CacheIgnoreHeaders header-string [header-string] ...
默认CacheIgnoreHeaders None
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache

根据 RFC 2616,逐跳 HTTP 头部不会存储在缓存中。以下 HTTP 头部是逐跳头部,因此无论 CacheIgnoreHeaders 的设置如何,都不会存储在缓存中。

CacheIgnoreHeaders 指定了不应该存储在缓存中的其他 HTTP 头部。例如,在某些情况下,阻止 cookie 存储在缓存中是有意义的。

CacheIgnoreHeaders 接受一个以空格分隔的 HTTP 头部列表,这些头部不应该存储在缓存中。如果只需要存储逐跳头部(符合 RFC 2616 的行为),则可以将 CacheIgnoreHeaders 设置为 None

示例 1

CacheIgnoreHeaders Set-Cookie

示例 2

CacheIgnoreHeaders None

警告

如果由于 CacheIgnoreHeaders 设置,像 Expires 这样的用于正确缓存管理的头部没有被存储,则 mod_cache 的行为是未定义的。
top

CacheIgnoreNoLastMod 指令

描述忽略响应没有 Last Modified 头部的事实。
语法CacheIgnoreNoLastMod On|Off
默认CacheIgnoreNoLastMod Off
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

通常,没有最后修改日期的文档不会被缓存。在某些情况下,最后修改日期会被删除(例如,在 mod_include 处理期间)或根本没有提供。 CacheIgnoreNoLastMod 指令提供了一种方法来指定没有最后修改日期的文档应该被考虑缓存,即使没有最后修改日期。如果文档没有提供最后修改日期或过期日期,则将使用 CacheDefaultExpire 指令指定的值来生成过期日期。

CacheIgnoreNoLastMod On
top

CacheIgnoreQueryString 指令

描述缓存时忽略查询字符串。
语法CacheIgnoreQueryString On|Off
默认CacheIgnoreQueryString Off
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache

通常,带有查询字符串参数的请求会针对每个唯一的查询字符串单独缓存。这符合 RFC 2616/13.9,只有在指定了过期时间的情况下才会执行。 CacheIgnoreQueryString 指令告诉缓存即使没有指定过期时间也要缓存请求,并且即使查询字符串不同也要使用缓存的回复进行回复。从缓存的角度来看,当启用此指令时,请求被视为没有查询字符串。

CacheIgnoreQueryString On
top

CacheIgnoreURLSessionIdentifiers 指令

描述缓存时忽略 URL 中编码的已定义会话标识符。
语法CacheIgnoreURLSessionIdentifiers identifier [identifier] ...
默认CacheIgnoreURLSessionIdentifiers None
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache

有时应用程序会将会话标识符编码到 URL 中,如下面的示例所示

这会导致可缓存资源针对每个会话单独存储,这通常是不希望的。 CacheIgnoreURLSessionIdentifiers 允许定义一个标识符列表,这些标识符将从用于标识缓存中实体的键中删除,这样可缓存资源就不会针对每个会话单独存储。

CacheIgnoreURLSessionIdentifiers None 清除忽略的标识符列表。否则,每个标识符都会被添加到列表中。

示例 1

CacheIgnoreURLSessionIdentifiers jsessionid

示例 2

CacheIgnoreURLSessionIdentifiers None
top

CacheKeyBaseURL 指令

描述覆盖反向代理缓存键的基 URL。
语法CacheKeyBaseURL URL
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache
兼容性在 Apache 2.3.9 及更高版本中可用

当指定 CacheKeyBaseURL 指令时,提供的 URL 将用作基 URL 来计算反向代理配置中缓存键的 URL。当没有指定时,将使用当前虚拟主机的方案、主机名和端口来构建缓存键。当存在机器集群并且所有缓存条目都应该在同一个缓存键下缓存时,可以使用此指令指定一个新的基 URL。

# Override the base URL of the cache key.
CacheKeyBaseURL "http://www.example.com/"
设置此指令时要小心。如果两个独立的虚拟主机意外地被赋予相同的基 URL,则来自一个虚拟主机的条目将被提供给另一个虚拟主机。
top

CacheLastModifiedFactor 指令

描述用于根据 LastModified 日期计算过期日期的因子。
语法CacheLastModifiedFactor float
默认CacheLastModifiedFactor 0.1
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

如果文档没有提供过期日期,但提供了最后修改日期,则可以根据文档最后修改的时间来计算过期日期。 CacheLastModifiedFactor 指令指定一个 factor 用于根据以下公式生成此过期日期: expiry-period = time-since-last-modified-date * factor expiry-date = current-date + expiry-period 例如,如果文档最后修改时间是 10 小时前,并且 factor 是 0.1,则过期时间将设置为 10*0.1 = 1 小时。如果当前时间是下午 3:00,则计算出的过期日期将是下午 3:00 + 1 小时 = 下午 4:00。如果过期时间超过 CacheMaxExpire 设置的时间,则后者优先。

CacheLastModifiedFactor 0.5
top

CacheLock 指令

描述启用雷群锁。
语法CacheLock on|off
默认CacheLock off
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache
兼容性在 Apache 2.2.15 及更高版本中可用

CacheLock 指令为给定的 URL 空间启用雷群锁。

在最小配置中,以下指令是为默认系统临时目录启用雷群锁所需的一切。

# Enable cache lock
CacheLock on
top

CacheLockMaxAge 指令

描述设置缓存锁的最大可能年龄。
语法CacheLockMaxAge integer
默认CacheLockMaxAge 5
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache

CacheLockMaxAge 指令指定任何缓存锁的最大年龄。

比此值(以秒为单位)更旧的锁将被忽略,下一个传入的请求将有机会重新建立锁。此机制可以防止缓慢的客户端花费过长时间来刷新实体。

top

CacheLockPath 指令

描述设置锁路径目录。
语法CacheLockPath directory
默认CacheLockPath /tmp/mod_cache-lock
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache

CacheLockPath 指令允许您指定创建锁的目录。默认情况下,使用系统的临时文件夹。锁由仅存在于正在飞行的过时 URL 的空文件组成,因此比传统的磁盘缓存消耗的资源要少得多。

top

CacheMaxExpire 指令

描述缓存文档的最大时间(以秒为单位)。
语法CacheMaxExpire seconds
默认CacheMaxExpire 86400(一天)
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

CacheMaxExpire 指令指定可缓存 HTTP 文档在不检查源服务器的情况下保留的最大秒数。因此,文档最多会过时此秒数。即使文档提供了过期日期,也会强制执行此最大值。

CacheMaxExpire 604800
top

CacheMinExpire 指令

描述缓存文档的最小时间(以秒为单位)。
语法CacheMinExpire seconds
默认CacheMinExpire 0
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

CacheMinExpire 指令指定可缓存 HTTP 文档在不检查源服务器的情况下保留的最小秒数。这仅在文档没有提供有效的过期时间时使用。

CacheMinExpire 3600
top

CacheQuickHandler 指令

描述从快速处理程序运行缓存。
语法CacheQuickHandler on|off
默认CacheQuickHandler on
上下文服务器配置、虚拟主机
状态扩展
模块mod_cache
兼容性Apache HTTP Server 2.3.3 及更高版本

CacheQuickHandler 指令控制处理缓存的阶段。

在默认启用的配置中,缓存在快速处理程序阶段内运行。此阶段会缩短大多数服务器处理过程,并且代表了典型服务器最有效的运行模式。缓存**直接连接到**服务器的前面,并且避免了大多数服务器处理过程。

当禁用时,缓存作为正常的处理程序运行,并且在处理服务器请求时会受到所有阶段的限制。虽然此模式比默认模式慢,但它允许在需要完整处理的情况下使用缓存,例如,当内容受授权限制时。

# Run cache as a normal handler
CacheQuickHandler off

此外,当快速处理程序被禁用时,管理员可以通过将**CACHE**过滤器添加到链中来选择在过滤器链中的确切位置执行缓存。

# Cache content before mod_include and mod_deflate
CacheQuickHandler off
AddOutputFilterByType CACHE;INCLUDES;DEFLATE text/html

如果 CACHE 过滤器被指定多次,则最后一个实例将应用。

top

CacheStaleOnError 指令

描述提供陈旧的内容来代替 5xx 响应。
语法CacheStaleOnError on|off
默认CacheStaleOnError on
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache
兼容性在 Apache 2.3.9 及更高版本中可用

CacheStaleOnError 指令被打开,并且缓存中存在陈旧数据时,缓存将通过返回陈旧数据而不是 5xx 响应来响应来自后端的 5xx 响应。虽然客户端发送的 Cache-Control 头部将被尊重,并且按要求将原始 5xx 响应返回给客户端,但返回给客户端的 5xx 响应不会使缓存中的内容失效。

# Serve stale data on error.
CacheStaleOnError on
top

CacheStoreExpired 指令

描述尝试缓存服务器报告已过期的响应。
语法CacheStoreExpired On|Off
默认CacheStoreExpired Off
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

从 httpd 2.2.4 开始,已经过期的响应不会存储在缓存中。 CacheStoreExpired 指令允许覆盖此行为。 CacheStoreExpired On 告诉服务器尝试缓存资源,即使它已经过时。后续请求将触发对源服务器的 If-Modified-Since 请求,如果后端资源没有改变,则响应可能会从缓存中满足。

CacheStoreExpired On
top

CacheStoreNoStore 指令

描述尝试缓存已标记为 no-store 的请求或响应。
语法CacheStoreNoStore On|Off
默认CacheStoreNoStore Off
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

通常,带有 Cache-Control: no-store 头部值的请求或响应不会存储在缓存中。 CacheStoreNoStore 指令允许覆盖此行为。 CacheStoreNoStore On 告诉服务器尝试缓存资源,即使它包含 no-store 头部值。需要授权的资源**永远不会**被缓存。

CacheStoreNoStore On

警告

如 RFC 2616 中所述,no-store 指令旨在“防止敏感信息的意外泄露或保留(例如,在备份磁带上)”。启用此选项可能会将敏感信息存储在缓存中。特此警告。

另请参阅

top

CacheStorePrivate 指令

描述尝试缓存服务器已标记为私有的响应
语法CacheStorePrivate On|Off
默认CacheStorePrivate Off
上下文服务器配置、虚拟主机、目录、.htaccess
状态扩展
模块mod_cache

通常,带有 Cache-Control: private 头值的响应不会存储在缓存中。CacheStorePrivate 指令允许覆盖此行为。CacheStorePrivate On 告诉服务器尝试缓存资源,即使它包含私有头值。需要授权的资源将永远不会被缓存。

CacheStorePrivate On

警告

即使上游服务器已请求不要缓存资源,此指令也将允许缓存。此指令仅适用于“私有”缓存。

另请参阅

可用语言:  en  |  fr  |  ja  |  ko 

top

评论

注意
这不是问答部分。此处放置的评论应指向有关改进文档或服务器的建议,如果它们已实施或被认为无效/主题外,可能会被我们的版主删除。有关如何管理 Apache HTTP Server 的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的 邮件列表