Hello!
2016-02-14 23:44 GMT-08:00 项楠:
> 我的需求目前只涉及登录,登出, 记录一些简单的文本数据在session里面,
>
> 假如我只关心速度和便利, 不考虑数据持久,安全,加密之类的, 可以这样做吗?
>
> init_by_lua '
> local dogs = ngx.shared.dogs; --这里为什么要加local
> dogs:set("Tom", 56)
> ';
>
> server {
> location = /api {
> content_by_lua '
> local dogs = ngx.shared.dogs; -- 这里为什么不直接local dogs = dogs,
> 或者直接去掉这一句也可以的吧
读取 Lua 全局变量本质上是一到多次的 Lua table 查找,性能远不及 local 变量(尤其是通过 LuaJIT 的解释器执行的时候)。
另外,Lua 全局变量会污染全局名字空间,特别是在 init_by_lua* 上下文中,容易起发难于调试的副作用。更多细节请参见
https://github.com/openresty/lua-nginx-module#lua-variable-scope
Regards,
-agentzh