2015-03-14

openresty lua_code_cache 文档中文

看兴趣时不时翻译些openresty的主要功能的文档

lua_code_cache

语法: *lua_code_cache on | off*

默认值: *lua_code_cache on*

可用在上下文: http, server, location, location if

*_by_lua_file(如 set_by_lua_file 和 content_by_lua_file) 这些指令以及Lua模块, 开启或关闭Lua代码缓存.

如果关闭,每个ngx_lua处理的请求将运行在一个独立的Lua VM实例里,0.9.3版本后有效. 所以 set_by_lua_file, content_by_lua_file, access_by_lua_file, 等等指令引用的Lua文件将不再缓存到内存, 并且所有Lua模块每次都会从头重新加载. 这样开发者就可以避免改代码然后重启nginx的操作.

但是, 那些直接写在 nginx.conf 里的代码比如由 set_by_lua, content_by_lua, access_by_lua, and rewrite_by_lua 指定的代码不会在你编辑他们时实时更新,因为只有发送HUP信号通知Nginx才会正确重新加载Nginx的config文件。

即使打开了代码缓存, 那些*_by_lua_file指令里由 dofileloadfile 加载的Lua文件也无法被缓存 (除非你自己手动缓存了他们). 通常你可以用 init_by_lua 或 init_by_lua_file 其中一种指令来加载所有这些无法被缓存 的文件,或把这些文件做成真正的Lua模块并用require加载.

ngx_lua 模块不支持Apache mod_lua 模块的 stat 模式 (目前).

生产环境下千万别关闭Lua代码缓存,只能用在开发模式下,因为对性能有十分大的影响(每次IO读取和编译Lua代码消耗很大, 简单的hello world都会慢一个数量级)。

现在google翻译技术文档基本正确了,没必要再翻译了


回主页