#误区 1:把 OpenResty 当成“脚本版 Nginx”
错。它是事件驱动运行时,不是给配置文件缝几段 Lua。
#误区 2:在请求阶段使用阻塞库
这是最危险的。只要把 worker 卡住,你的高并发优势就没了。
#误区 3:乱用全局变量
全局变量不仅可能污染命名空间,还会让 worker 间行为不一致。
模块状态、共享状态、本地状态,一定要分清。
#误区 4:不知道不同 phase 能做什么
不是所有阶段都能干同样的事。
比如某些上下文里不能做 cosocket I/O,filter 阶段也有自己的限制。
#误区 5:以为 body_filter 拿到的是完整响应体
很多时候你拿到的是分块流。
你是在流水线上接一段一段钢材,不是一次性拿到整根。
#误区 6:把 lua_shared_dict 当数据库
它是共享内存字典,适合缓存、计数、轻量协调,不是通用持久化数据库。
#误区 7:所有逻辑都堆在一个 access_by_lua_block
前期快,后期一定烂。
一定要插件化、模块化、分层。
#误区 8:觉得 OpenResty 就一定比所有方案更快
不成立。
如果你的逻辑设计糟糕、I/O 阻塞、subrequest 滥用、共享字典冲突严重,性能照样会塌。