作者回复: 后面会专门介绍 OpenResty 的 Lua API。LuaJIT 的这些内容有个印象即可。
作者回复: package.path 是默认的查找路径,你可以单独把它 print 出来看下里面的值。不拼接的话,就把默认查找路径全都覆盖掉了。
作者回复: 现在还没啥好用的编辑器,我用的是 vs code
作者回复: 是按照原语来编译的,也就是 `ipairs` 、`string.find` 这种的颗粒度,并不是你自己写的 function
作者回复: 这个具体要看 nginx 配置的 rewrite 规则是怎么写的了,是 break 还是 last。这个在官方文档中有注明,并且配了一个示例代码:
location /foo {
rewrite ^ /bar;
rewrite_by_lua 'ngx.exit(503)';
}
location /bar {
...
}
上面这个配置中,ngx.exit(503) 是不会被执行的。但是,如果改成:
rewrite ^ /bar break;
ngx.exit(503) 就是可以执行的。
作者回复: 看不懂没有关系,重要的是记得有LuaJIT 和 NYI 这个东西,后面遇到问题方便查找。
作者回复: 是的
作者回复: Kong 和 OpenResty 的团队中,都有人在逐步接手。开源项目只要有人在使用,就不会死掉,不用担心。
作者回复: LuaJIT 的优化是随机触发的,要足够热才可能尝试去优化
作者回复: 还有 https://github.com/LuaJIT/LuaJIT/blob/v2.1/doc/extensions.html
作者回复: 推荐看 OpenResty 相关的开源项目,比如 lua-resty 库。
作者回复: 需要用火焰图分析下 on-cpu 才行
作者回复: 你可以使用一个 timer,定时的查询是否有新的配置,并把新配置写到类似 shared dict 的缓存中。
作者回复: 这个问题其实要回到 OpenResty 诞生的那个时候来看, 2007 年,支持同步非阻塞的语言凤毛麟角。
即使是现在,后端语言可以达到 OpenResty 这种性能级别的也不多。
API 网关和软 WAF 算是开发者的自然选择,OpenResty 其实能做的不止这些。