性能永远是个大问题,lighttpd也不例外.
Request: mod_rewrite check if file exists (like mod_rewrite in apache)
大意是用这样的rewrite,
实现如果没有文件,lighttpd调用mod_fastcgi,
同时运行php脚本生成(当然一并显示出来),
如果有文件则直接输出,利用lighttpd的高性能.
"/(.+)/?$" => "index.php?name=$1",
于是有人就拿出了自己的修改版mod_rewrite,重新编译/用预编译版即可在lighttpd上使用.
但是,这个问题远未结束,
显然这样的模块修改不会进入lighttpd的mainline.
lighttpd 1.4.12 加入了新的模块(需要 lua >= 5.1).
mod_magnet: mod_magnet is a module to control the request handling in lighty.
gentoo下可通过打开USE lua得到这个lighttpd增加的功能.
(fastcgi也必须同时打开.)
通过书写 lua 脚本,
mod_magnet能够简单替换/扩展以下lighttpd内置模块的功能:
mod_rewrite, 通过设置 lighty.env["request.uri"]
mod_cml
前面所属的问题,可以通过 lighty.stat() 解决.
lighty.stat() 中提供了 is_file, is_dir 等函数的快速(含缓存)实现.
(具体可以参见lighttpd(lighty) 性能优化)
判断文件是否存在之后,重新写入 lighty.content,
让lighttpd发送出去就可以了.
理论上这个问题还可以用 mod_cml 解决,
但是自从lighttpd 1.4.12起,
估计就没有人喜欢它了.
前面说到了性能的问题.
从这个地方查询了一下,性能比perl,python都要略好一些,
十分让人欣慰…
mod_magnet的性能如何呢?
有些人测试从4200req/s 掉到 3200req/s,
这大概还是可以接受的吧.
参考资料:
ModMagnet