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

Apache 模块 mod_file_cache

可用语言:  en  |  fr  |  ko 

描述在内存中缓存静态文件列表
状态实验性
模块标识符file_cache_module
源文件mod_file_cache.c

摘要

使用此模块时应谨慎。使用 mod_file_cache 很容易创建损坏的网站,因此请仔细阅读本文档。

缓存 经常请求且变化很少的静态文件是减少服务器负载的一种技术。 mod_file_cache 提供两种缓存经常请求的静态文件的方法。通过配置指令,您可以指示 mod_file_cache 既可以打开然后 mmap() 文件,也可以预先打开文件并保存文件的打开文件句柄。这两种技术都通过在服务器启动时而不是在每次请求期间完成部分工作(特别是文件 I/O)来减少处理这些文件请求时的服务器负载。

注意:您不能使用它来加速 CGI 程序或其他由特殊内容处理程序提供的文件。它只能用于通常由 Apache 核心内容处理程序提供的普通文件。

此模块是 Apache 1.3 中 mod_mmap_static 模块的扩展,并大量借鉴了该模块。

Support Apache!

主题

指令

错误修复清单

另请参阅

top

使用 mod_file_cache

mod_file_cache 通过主服务器配置中的 MMapFileCacheFile 指令缓存静态配置的文件列表。

并非所有平台都支持这两种指令。如果您尝试使用不支持的指令,您将在服务器错误日志中收到错误消息。如果给定不支持的指令,服务器将启动,但文件不会被缓存。在支持这两种指令的平台上,您应该尝试使用这两种指令,看看哪种最适合您。

MMapFile 指令

MMapFile 指令通过系统调用 mmap()mod_file_cache 的静态配置文件列表映射到内存中。此系统调用在大多数现代 Unix 派生系统上可用,但并非在所有系统上都可用。有时系统对可以 mmap() 的文件的大小和数量有限制,实验可能是找出这些限制的最简单方法。

mmap() 操作仅在服务器启动或重启时执行一次。因此,每当映射文件之一在文件系统上发生更改时,您必须重启服务器(请参阅 停止和重启 文档)。再次强调这一点:如果在不重启服务器的情况下就地修改文件,您最终可能会提供完全错误的请求。您应该通过取消链接旧副本并将新副本放在适当位置来更新文件。大多数工具(如 rdistmv)都会这样做。此模块不处理文件更改的原因是,此检查需要在每次请求时额外执行一次 stat() 操作,这是一种浪费,而且与减少 I/O 的意图相悖。

CacheFile 指令

CacheFile 指令打开 mod_file_cache 的配置指令中列出的文件(或文件)的活动句柄文件描述符,并将这些打开的文件句柄放入缓存中。当请求文件时,服务器从缓存中检索句柄并将其传递给 sendfile()(或 Windows 上的 TransmitFile())套接字 API。

此文件句柄缓存仅在服务器启动或重启时执行一次。因此,每当缓存文件之一在文件系统上发生更改时,您必须重启服务器(请参阅 停止和重启 文档)。再次强调这一点:如果在不重启服务器的情况下就地修改文件,您最终可能会提供完全错误的请求。您应该通过取消链接旧副本并将新副本放在适当位置来更新文件。大多数工具(如 rdistmv)都会这样做。

注意

不要费心询问递归缓存目录中所有文件的指令。尝试以下方法... 请参阅 Include 指令,并考虑以下命令

find /www/htdocs -type f -print \
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf

top

CacheFile 指令

描述在启动时缓存文件句柄列表
语法CacheFile 文件路径 [文件路径] ...
上下文服务器配置
状态实验性
模块mod_file_cache

CacheFile 指令打开一个或多个文件(作为空格分隔的参数给出)的句柄,并在服务器启动时将这些句柄放入缓存中。缓存文件的句柄在服务器关闭时会自动关闭。当文件在文件系统上发生更改时,应重启服务器以重新缓存它们。

请注意 文件路径 参数:它们必须与 Apache 的 URL 到文件名转换处理程序创建的文件系统路径完全匹配。我们不能比较 inode 或其他内容来匹配通过符号链接等的路径,因为这又会花费额外的 stat() 系统调用,这是不可接受的。此模块可能支持也可能不支持由 mod_aliasmod_rewrite 重写的文件名。

示例

CacheFile /usr/local/apache/htdocs/index.html
top

MMapFile 指令

描述在启动时将文件列表映射到内存中
语法MMapFile 文件路径 [文件路径] ...
上下文服务器配置
状态实验性
模块mod_file_cache

MMapFile 指令在服务器启动时将一个或多个文件(作为空格分隔的参数给出)映射到内存中。它们在服务器关闭时会自动取消映射。当文件在文件系统上发生更改时,至少应向服务器发送 HUPUSR1 信号以重新 mmap() 它们。

请注意 文件路径 参数:它们必须与 Apache 的 URL 到文件名转换处理程序创建的文件系统路径完全匹配。我们不能比较 inode 或其他内容来匹配通过符号链接等的路径,因为这又会花费额外的 stat() 系统调用,这是不可接受的。此模块可能支持也可能不支持由 mod_aliasmod_rewrite 重写的文件名。

示例

MMapFile /usr/local/apache/htdocs/index.html

可用语言:  en  |  fr  |  ko 

top

评论

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