<-
Apache HTTP 服务器 2.4 > Apache模块mod_cache

Apache模块mod_cache

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

摘要

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

mod_cache实现符合 RFC 2616的HTTP内容缓存过滤器,并支持缓存包含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允许高速缓存在从源服务器刷新现有的过时条目时返回过时的数据,并且mod_cacheCacheLock适当配置了伪指令时将 支持此功能。这样的响应将包含 带有110响应代码的 Warning HTTP标头。当尝试刷新陈旧数据的尝试返回错误500或更高时,RFC 2616还允许缓存返回陈旧数据,并且默认情况下支持此行为 mod_cache。此类响应将包含 带有111响应代码的 Warning HTTP标头。

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

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

缓存指南》中提供了更多详细信息,讨论和示例 。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

相关模块和指令

最佳

样本配置

样本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>
最佳

避开雷电群

当缓存的条目变得陈旧时,mod_cache将向后端提交条件请求,以确认后端是否仍然是最新的,如果不是,则发送更新的实体。

从缓存的实体变为陈旧的时间到陈旧的实体被完全刷新的时间之间,存在少量但有限的时间。在繁忙的服务器上,请求的显著数量可能会在这段时间内抵达,并引起惊群请求的突然和不可预知撞击后端。

为了避免雷声大浪,该CacheLock 指令可用于定义目录,在该目录中为飞行中的 URL创建锁。该锁被 其他请求用作提示,以抑制尝试进行缓存的尝试(其他人已经获取了该实体),或者指示正在刷新陈旧的条目(同时将返回陈旧的内容)。

条目的初始缓存

首次缓存实体时,将为该实体创建锁,直到响应已完全缓存。在锁定的生存期内,缓存将禁止第二次及以后尝试缓存同一实体。虽然这并不能阻止雷声群,但是它确实停止了尝试同时多次缓存同一实体的缓存。

刷新陈旧条目

当实体达到其新鲜度生命周期并过时时,将为该实体创建一个锁,直到确认响应仍为新鲜或由后端替换为止。在锁的有效期内,第二个及随后的传入请求将导致过时的数据被返回,而雷电群则被拒之门外。

锁和缓存控制:无缓存

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

作为进一步的安全机制,锁具有可配置的最大使用寿命。达到该年龄后,将删除该锁,并为新请求提供创建新锁的机会。可以使用CacheLockMaxAge伪指令设置此最大期限,默认为5秒。

配置示例

启用缓存锁

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

使用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无法为您执行此操作。
最佳

缓存状态和日志记录

一旦mod_cache决定了是否要从缓存中提供实体,就将决定的详细原因写入到缓存状态键下的请求内的子流程环境中 。LogFormat指令可以记录此原因 ,如下所示:

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

根据所做的缓存决策,还将根据以下四个关键之一将原因写入子流程环境:

缓存命中
响应是从缓存提供的。
缓存重新验证
响应已过时,已成功重新验证,然后从缓存中提供。
高速缓存未命中
响应是从上游服务器提供的。
缓存无效
缓存的实体通过除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的钩子,该钩子允许模块以自定义方式响应上述缓存结果。

最佳

CacheDefaultExpire 指令

描述:未指定有效日期时的默认文档缓存时间。
句法:CacheDefaultExpire seconds
默认:CacheDefaultExpire 3600 (one hour)
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

CacheDefaultExpire指令指定了默认时间(以秒为单位),如果文档没有提供到期日期或最后修改日期,则该默认时间以秒为单位。用CacheMaxExpire 伪指令指定的值不会覆盖此设置。

CacheDefaultExpire 86400
最佳

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

最佳

CacheDisable 指令

描述:禁用指定URL的缓存
句法:CacheDisable url-string | on
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

CacheDisable指令指示 mod_cache等于或低于缓存的URL 网址字符串

CacheDisable "/local_files"

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

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

no-cache环境变量可以设置禁用缓存在2.2.12及以后的版本更细粒度的资源集合。

也可以看看

最佳

CacheEnable 指令

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

CacheEnable指令指示 mod_cache将url缓存在url-string或以下 。高速缓存存储管理器由cache_type参数指定 。该CacheEnable 指令可以替代地放置在 <Location><LocationMatch>部分中,以指示内容是可缓存的。 cache_type disk指示 mod_cache使用由实现的基于磁盘的存储管理器mod_cache_diskcache_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/"

no-cache环境变量可以设置禁用缓存在2.2.12及以后的版本更细粒度的资源集合。

也可以看看

最佳

CacheHeader 指令

描述:将X-Cache标头添加到响应中。
句法:CacheHeader on|off
默认:CacheHeader off
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache
兼容性:在Apache 2.3.9和更高版本中可用

当该CacheHeader指令打开时,X-Cache标头将添加到响应中,并带有该响应的缓存状态。如果使用普通处理程序,则该指令可能出现在<Directory><Location>指令内。如果使用快速处理程序,则此伪指令必须出现在服务器或虚拟主机上下文中,否则设置将被忽略。

击中
该实体是新鲜的,并且是从缓存中提供的。
重新验证
该实体已过时,已成功重新验证并从缓存中提供。
小姐
该实体是从上游服务器获取的,而不是从缓存提供的。
# Enable the X-Cache header
CacheHeader on
X-Cache: HIT from localhost
最佳

CacheIgnoreCacheControl 指令

描述:忽略不向客户端提供缓存内容的请求
句法:CacheIgnoreCacheControl On|Off
默认:CacheIgnoreCacheControl Off
内容:服务器配置,虚拟主机
状态:延期
模块:mod_cache

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

CacheIgnoreCacheControl On

警告:

即使客户端已请求不从缓存中提供文档,此伪指令也将允许从缓存中提供服务。这可能会导致提供过时的内容。

也可以看看

最佳

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

警告:

如果Expires由于CacheIgnoreHeaders设置而没有存储正确的缓存管理所需的 标题,则未定义mod_cache的行为。
最佳

CacheIgnoreNoLastMod 指令

描述:忽略响应没有Last Modified标头的事实。
句法:CacheIgnoreNoLastMod On|Off
默认:CacheIgnoreNoLastMod Off
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

通常,不缓存没有最后修改日期的文档。在某些情况下,上次修改的日期会被删除(mod_include例如在 处理过程中)或根本不提供。该CacheIgnoreNoLastMod指令提供了一种方法,可以指定没有上次修改日期的文档也应考虑进行缓存,即使没有上次修改日期也是如此。如果文档未提供最后修改日期和有效日期,则该CacheDefaultExpire指令指定的值 将用于生成有效日期。

CacheIgnoreNoLastMod On
最佳

CacheIgnoreQueryString 指令

描述:缓存时忽略查询字符串
句法:CacheIgnoreQueryString On|Off
默认:CacheIgnoreQueryString Off
内容:服务器配置,虚拟主机
状态:延期
模块:mod_cache

通常,具有查询字符串参数的请求将分别为每个唯一查询字符串缓存。仅当指定了到期时间时,才根据RFC 2616 / 13.9执行此操作。该 CacheIgnoreQueryString指令告诉缓存,即使未指定过期时间,也缓存请求,即使查询字符串不同,也以缓存的回复进行回复。从缓存的角度来看,启用此伪指令后,将请求视为没有查询字符串。

CacheIgnoreQueryString On
最佳

CacheIgnoreURLSessionIdentifiers 指令

描述:缓存时忽略URL中编码的定义的会话标识符
句法:CacheIgnoreURLSessionIdentifiers identifier [identifier] ...
默认:CacheIgnoreURLSessionIdentifiers None
内容:服务器配置,虚拟主机
状态:延期
模块:mod_cache

有时,应用程序会将会话标识符编码为URL,如以下示例所示:

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

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

例子1

CacheIgnoreURLSessionIdentifiers jsessionid

例子2

CacheIgnoreURLSessionIdentifiers None
最佳

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,则来自一个虚拟主机的条目将被提供给另一个虚拟主机。
最佳

CacheLastModifiedFactor 指令

描述:用于基于LastModified日期计算到期日期的因子。
句法:CacheLastModifiedFactor float
默认:CacheLastModifiedFactor 0.1
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

如果文档未提供有效期但提供了最后修改日期,则可以基于自上次修改文档以来的时间来计算有效期。该 CacheLastModifiedFactor伪指令根据以下公式指定要在该到期日期的生成中使用的 因子: 例如,如果文档最后一次修改是在10小时前,并且 因子为0.1,则到期期限将设置为10 * 0.1 = 1小时。如果当前时间是3:00 pm,则计算的到期日期将是3:00 pm + 1hour = 4:00 pm。如果到期期限比设置的期限长 ,则后者优先。expiry-period = time-since-last-modified-date * factor expiry-date = current-date + expiry-periodCacheMaxExpire

CacheLastModifiedFactor 0.5
最佳

CacheLock 指令

描述:启用防雷群锁。
句法:CacheLock on|off
默认:CacheLock off
内容:服务器配置,虚拟主机
状态:延期
模块:mod_cache
兼容性:在Apache 2.2.15及更高版本中可用

CacheLock指令为给定的URL空间启用雷电追赶锁。

在最低配置中,以下指令是启用默认系统临时目录中的雷电追赶者锁所需要的全部。

# Enable cache lock
CacheLock on
最佳

CacheLockMaxAge 指令

描述:设置高速缓存锁定的最大可能期限。
句法:CacheLockMaxAge integer
默认:CacheLockMaxAge 5
内容:服务器配置,虚拟主机
状态:延期
模块:mod_cache

CacheLockMaxAge伪指令指定任何高速缓存锁的最长期限。

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

最佳

CacheLockPath 指令

描述:设置锁定路径目录。
句法:CacheLockPath directory
默认:CacheLockPath /tmp/mod_cache-lock
内容:服务器配置,虚拟主机
状态:延期
模块:mod_cache

CacheLockPath指令允许您指定在其中创建锁的目录。默认情况下,使用系统的临时文件夹。锁由空文件组成,这些空文件仅在飞行中的过时URL中存在,因此与传统的磁盘缓存相比,资源占用量明显减少。

最佳

CacheMaxExpire 指令

描述:缓存文档的最长时间(以秒为单位)
句法:CacheMaxExpire seconds
默认:CacheMaxExpire 86400 (one day)
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

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

CacheMaxExpire 604800
最佳

CacheMinExpire 指令

描述:缓存文档的最短时间(以秒为单位)
句法:CacheMinExpire seconds
默认:CacheMinExpire 0
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

CacheMinExpire指令指定不检查源服务器而保留可缓存HTTP文档的最小秒数。仅当文档没有提供有效的到期时间时才使用此选项。

CacheMinExpire 3600
最佳

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过滤器,则将应用最后一个实例。

最佳

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
最佳

CacheStoreExpired 指令

描述:尝试缓存服务器报告为过期的响应
句法:CacheStoreExpired On|Off
默认:CacheStoreExpired Off
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

从httpd 2.2.4开始,已经过期的响应不会存储在缓存中。该CacheStoreExpired 指令允许覆盖此行为。 CacheStoreExpired开启告诉服务器尝试缓存资源(如果陈旧)。后续请求将触发原始服务器的If-Modified-Since请求,并且如果后端资源未更改,则可以从缓存中满足响应。

CacheStoreExpired On
最佳

CacheStoreNoStore 指令

描述:尝试缓存已标记为“无存储”的请求或响应。
句法:CacheStoreNoStore On|Off
默认:CacheStoreNoStore Off
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

通常,带有Cache-Control: no-store标头值的请求或响应不会存储在缓存中。该 CacheStoreNoStore指令允许覆盖此行为。 CacheStoreNoStoreOn指示服务器尝试缓存资源,即使该资源包含无存储标头值也是如此。需要授权的资源将 永远不会被缓存。

CacheStoreNoStore On

警告:

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

也可以看看

最佳

CacheStorePrivate 指令

描述:尝试缓存服务器已标记为私有的响应
句法:CacheStorePrivate On|Off
默认:CacheStorePrivate Off
内容:服务器配置,虚拟主机,目录,.htaccess
状态:延期
模块:mod_cache

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

CacheStorePrivate On

警告:

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

也可以看看

可用语言: zh  |  fr  |  ja  |  KO 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。