mod_file_cache
描述: | 在 memory 中缓存 files 的静态列表 |
状态: | 试验 |
模块标识符: | file_cache_module |
源文件: | mod_file_cache.c |
摘要
应谨慎使用此模块。您可以使用mod_file_cache轻松创建损坏的站点,因此请仔细阅读本文档。
缓存频繁请求的 files 很少变化是一种减少服务器负载的技术。mod_file_cache提供了两种缓存频繁请求的静态 files 的技术。通过 configuration 指令,您可以指示mod_file_cache打开mmap()
文件,或者 pre-open 文件并保存文件的打开文件句柄。这两种技术在处理对这些 files 的请求时通过执行部分工作(特别是文件 I/O)来减少服务器负载,以便在服务器启动时而不是在每个请求期间提供服务。
注意:您不能使用它来加速 CGI 程序或由特殊内容处理程序提供服务的其他 files。它只能用于通常由 Apache 核心内容处理程序提供的常规 files。
该模块是 Apache 1.3 中mod_mmap_static
模块的扩展和借用。
使用 mod_file_cache
mod_file_cache通过主服务器 configuration 中的MMapFile或求 CacheFile指令缓存静态配置的 files 列表。
并非所有平台都支持这两个指令。如果您尝试使用不受支持的指令,您将在服务器错误 log 中收到错误消息。如果给定不受支持的指令,则服务器将启动但不会缓存该文件。在支持这两个指令的平台上,您应该尝试两者以查看最适合您的指令。
MMapFile 指令
mod_file_cache的MMapFile指令 maps 通过系统调用mmap()
将静态配置的 files 列表导入 memory。这个系统调用可以在大多数现代 Unix 衍生产品上使用,但不是全部。有时限制 files 的大小和数量可以mmap()
ed,实验可能是最容易找到的方法。
此mmap()
ing 仅在服务器启动或重新启动时完成。因此,只要其中一个映射的 files 在文件系统上发生更改,就必须重新启动服务器(请参阅停止并重新启动文档)。重申这一点:如果在不重新启动服务器的情况下修改 files,您可能最终会提供完全虚假的请求。您应该通过取消链接旧副本并放置新副本来更新 files。大多数工具如rdist
和mv
都这样做。这个模块没有处理 files 更改的原因是这个检查需要每 time额外这是一个浪费和 I/O 减少的意图。
CacheFile 指令
mod_file_cache的求 CacheFile指令为 configuration 指令中列出的文件(或 files)打开 active 句柄或文件描述符,并将这些打开的文件句柄放在缓存中。请求文件时,服务器从缓存中检索句柄并将其传递给sendfile()
(或TransmitFile()
on Windows), socket API。
此文件句柄缓存仅在服务器启动或重新启动时完成。因此,只要其中一个缓存的 files 在文件系统上发生更改,您就必须重新启动服务器(请参阅停止并重新启动文档)。重申这一点:如果在不重新启动服务器的情况下修改 files,您可能最终会提供完全虚假的请求。您应该通过取消链接旧副本并放置新副本来更新 files。大多数工具,如rdist
和mv
都这样做。
注意
不要求一个递归缓存目录中所有 files 的指令。试试这个......请参阅包括指令,并考虑以下命令:
find /www/htdocs -type f -print \| sed -e 's/.*/mmapfile &/'>/www/conf/mmap.conf
CacheFile 指令
描述: | 在启动 time 时缓存文件句柄列表 |
句法: | CacheFile file-path[file-path]... |
Context: | 服务器配置 |
状态: | 试验 |
模块: | mod_file_cache |
CacheFile
指令打开一个或多个 files 的句柄(以空格分隔的 arguments 给出),并在服务器启动 time 时将这些句柄放入缓存中。缓存 files 的句柄在服务器关闭时自动关闭。当 files 在文件系统上发生变化时,服务器应重新启动到 re-cache。
小心 file-path arguments:他们必须真正匹配 Apache 的 URL-to-filename 翻译处理程序创建的文件系统路径。我们无法通过符号链接等将 inode 或其他内容与 match paths 进行比较,因为这会再次耗费额外的stat()
system calls,这是不可接受的。此模块可能使用也可能不使用mod_alias或mod_rewrite重写的文件名。
例
CacheFile /usr/local/apache/htdocs/index.html
MMapFile 指令
描述: | 在启动 time 时将 files 列表映射到 memory |
句法: | MMapFile file-path[file-path]... |
Context: | 服务器配置 |
状态: | 试验 |
模块: | mod_file_cache |
MMapFile
指令 maps 在服务器启动 time 时将一个或多个 files(以空格分隔的 arguments 给出)映射到 memory。它们在服务器关闭时自动取消映射。当 files 在文件系统上发生变化时,至少应该向服务器发送HUP
或USR1
信号以重新发送它们。
小心 file-path arguments:他们必须真正匹配 Apache 的 URL-to-filename 翻译处理程序创建的文件系统路径。我们无法通过符号链接等将 inode 或其他内容与 match paths 进行比较,因为这会再次耗费额外的stat()
system calls,这是不可接受的。此模块可能使用也可能不使用mod_alias或mod_rewrite重写的文件名。
例
MMapFile /usr/local/apache/htdocs/index.html