server.stat-cache-engine 选项¶
stat() 系统调用缓存;lighttpd 可以利用 FAM/Gamin 来缓存 stat 调用。
可能的值有: "disable", "simple", "fam", "inotify", 或 "kqueue"。
"disable"
不缓存任何 stat() 调用(单个请求可能会导致 3-4 次 stat() 调用)
如果您的文件大小经常变化,您可能需要禁用 stat 缓存
禁用"simple"
(默认;推荐)
缓存每个 stat() 调用一秒钟。"fam"
如果安装了 FAM 或 gamin 并且 lighty 链接了这些库,您
可以使用它们来控制 stat 缓存的新鲜度。"inotify"
(自 lighttpd 1.4.56 起)
在 Linux 上,使用inotify()
而不是 FAM 或 gamin(FAM 或 gamin 在 Linux 上也使用inotify()
)"kqueue"
(自 lighttpd 1.4.56 起)
在 *BSD 上,使用kqueue()
而不是 FAM 或 gamin(FAM 或 gamin 在 *BSD 上也使用kqueue()
)
示例¶
server.stat-cache-engine = "simple"
限制¶
缓存有其局限性。lighttpd 的 stat_cache 始终存在局限性。如果将 server.stat-cache-engine
与任何引擎一起使用,都会产生缓存效应和权衡。尽管如此,对于典型用例,仍建议使用 server.stat-cache-engine = "simple"
。
lighttpd stat_cache 监视器仅监视带有 "fam"
、"inotify"
或 "kqueue"
的目录。如果路径是目录的符号链接,lighttpd 会监视符号链接的目标目录,因此不要在 server.stat-cache-engine
设置为 "fam"
、"inotify"
或 "kqueue"
时使用 server.follow-symlink = "disable"
。另请注意,在这种情况下,lighttpd 可能不会监视包含符号链接的目录(该符号链接指向其他位置的目录)。
lighttpd stat_cache 监视器会收到受监视目录中文件添加和删除的通知,但根据 FAM 或 gamin 的操作系统实现(例如 inotify 或 kqueue),lighttpd 可能不会收到目录中文件更改的通知,例如时间戳(touch)、所有权,甚至内容更改(例如,如果文件通过硬链接编辑)。
当文件不应被缓存时,应使用 server.stat-cache-engine = "disable"
。句号。同样,如果文件经常更改,建议使用 "disable"
。
在 *BSD 上,如果在目录上使用 kqueue()
,任何报告的更改都会导致清除该目录所有条目的 stat_cache,因为仅监视目录并不能指示添加或删除了哪个文件。这对于包含频繁更改文件的目录来说效率不高。