| 描述: | 在内存中缓存文件的静态列表 |
|---|---|
| 状态: | 实验性 |
| 模块标识符: | file_cache_module |
| 源文件: | mod_file_cache.c |
mod_file_cache,因此请仔细阅读本文档。
缓存很少更改的频繁请求的文件是一种减少服务器负载的技术。
mod_file_cache提供两种技术来缓存经常请求的静态文件。通过配置指令,您可以直接mod_file_cache打开mmap()文件,或者预打开文件并保存文件的打开文件句柄。两种技术都通过在服务器启动时而不是在每个请求期间进行服务文件的一部分工作(特别是文件I / O)来减少处理这些文件的请求时的服务器负载。
注意:不能使用它来加速特殊内容处理程序提供的CGI程序或其他文件。它只能用于通常由Apache核心内容处理程序提供服务的常规文件。
该模块是mod_mmap_staticApache 1.3中模块的扩展,并从中大量借鉴
。
mod_file_cache通过主服务器配置中的MMapFile或CacheFile指令缓存静态配置文件的列表。
并非所有平台都支持这两个指令。如果尝试使用不受支持的指令,则会在服务器错误日志中收到一条错误消息。如果给出了不受支持的指令,则服务器将启动,但不会缓存文件。在同时支持这两个指令的平台上,您应该同时尝试这两个指令,以查看哪种最适合您。
该MMapFile
的指令mod_file_cache的静态配置文件列表映射到内存中通过系统调用
mmap()。大多数现代的Unix派生版本都可以使用此系统调用,但并非全部都可用。有时,可以mmap()编辑的文件大小和数量受到系统特定的限制
,实验可能是最容易发现的方法。
这mmap()ING一次在服务器启动或重启只是做。因此,每当文件系统上的映射文件之一发生更改时,都必须重新启动服务器(请参阅“ 停止和重新启动”文档)。重申这一点:如果在
不重新启动服务器的情况下修改了文件,则可能会导致完全伪造的请求得到处理。您应该通过取消链接旧副本并放置新副本来更新文件。大多数工具例如
rdist和mv执行此操作。该模块不处理文件更改的原因是,stat()每次检查都需要额外进行一次检查,这很浪费,而且与减少I / O的意图背道而驰。
该CacheFile
的指令mod_file_cache打开一个积极的
手柄或文件描述符在配置指令列出的文件(或文件),并在缓存中放置这些打开的文件句柄。请求文件时,服务器从缓存中检索句柄,并将其传递给
sendfile()(或TransmitFile()在Windows上)套接字API。
此文件句柄缓存仅在服务器启动或重新启动时完成一次。因此,无论何时在文件系统上更改了一个缓存文件,都必须重新启动服务器(请参阅“
停止和重新启动”
文档)。重申这一点:如果在不重新启动服务器的情况下修改了文件,则可能会导致完全伪造的请求得到处理。您应该通过取消链接旧副本并放置新副本来更新文件。大多数工具例如rdist和
mv执行此操作。
不必费心寻求一个指令,该指令以递归方式将所有文件缓存在目录中。请改用此方法...请参阅
Include指令,并考虑以下命令:
find /www/htdocs -type f -print \
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf
| 描述: | 在启动时缓存文件句柄列表 |
|---|---|
| 句法: | CacheFile file-path [file-path] ... |
| 内容: | 服务器配置 |
| 状态: | 实验性 |
| 模块: | mod_file_cache |
该CacheFile指令打开一个或多个文件的句柄(给定为空格分隔的参数),并在服务器启动时将这些句柄放入高速缓存中。服务器关闭时,将自动关闭对缓存文件的句柄。文件在文件系统上更改后,应重新启动服务器以重新缓存它们。
注意文件路径参数:它们必须从字面上匹配Apache的URL到文件名转换处理程序创建的文件系统路径。我们无法比较inode或其他东西来匹配通过符号链接等的路径,
因为这又会花费额外的stat()系统调用,这是不可接受的。该模块可能无法使用mod_alias或
重写的文件名mod_rewrite。
CacheFile /usr/local/apache/htdocs/index.html
| 描述: | 在启动时将文件列表映射到内存中 |
|---|---|
| 句法: | MMapFile file-path [file-path] ... |
| 内容: | 服务器配置 |
| 状态: | 实验性 |
| 模块: | mod_file_cache |
该MMapFile指令在服务器启动时将一个或多个文件(作为空格分隔的参数提供)映射到内存中。它们会在服务器关闭时自动取消映射。文件在文件系统上更改后,至少应将HUP或USR1信号发送至服务器以重新发送mmap()。
注意文件路径参数:它们必须从字面上匹配Apache的URL到文件名转换处理程序创建的文件系统路径。我们无法比较inode或其他东西来匹配通过符号链接等的路径,
因为这又会花费额外的stat()系统调用,这是不可接受的。该模块可能无法使用mod_alias或
重写的文件名mod_rewrite。
MMapFile /usr/local/apache/htdocs/index.html