Openresty(二十)加载lua文件的一些细节

一     配置文件中指令加载

①  openresty提供  lua_package_path

++++++++"细节"++++++++

0、默认
 
   1)会以'环境变量 LUA_PATH 的值'来初始这个环境变量 -->实际'未生效(不管是通过设置env或者shell
设置export)'

   2)如果'没有找到'该环境变量,则使用一个'编译时定义的默认路径'来初始化

1、? 表示'文件名'

2、;; --> '新加'的路径后面'加上'原来的'默认'路径 -->'推荐'

3、${prefix}是openresty指定的'安装'目录

(1)rpm安装默认的查找路径

说明:package.path表明lua文件的'搜索'路径,也是'require'、'dofile(存疑)' 加载文件的路径

 (2)路径分割符

+++++++++++  "操作系统文件分割符"  +++++++++++

package.config:sub(1,1).它返回'路径'分隔符;它'\\'位于Windows和'/'Unix上

场景: 做'路径'字符串'拼接'

查找细节: 

   1)require 'a.b' --> 会将'.'转换为'路径分割符'

   2)require或dofile的'字符串'就会替换对应的'问号?'

   3)在'package.path'路径中寻找文件

(3)哪些指令使用

*_by_lua  -->在配置文件中'嵌入'lua代码字符串

细节点: 本质还是通过代码字符串中的'reuire'或 'dofile(存疑)'加载,然后使用'package.path'查找

(4)解决多个项目的路径冲突问题

local p = "/home/wzj/work/"
local m_package_path = package.path
package.path = string.format("%s?.lua;%s?/init.lua;%s", p, p, m_package_path)

++++++++++++  "分割线"  ++++++++++++

package.cpath = "../wzj/bin/?.so;"..package.cpath

lua_package_cpath

②    相对路径 

(1)openresty|lua的安装目录

(2)哪些指令在prefix寻找目录

openrest中'相关指令':*_by_lua_file

补充:nginx中所有'指令中'指定的'相对'路径都是针对'--prefix'而言

(3)案例讲解 

说明: '业务'代码和配置文件'解耦' -->推荐'*by_lua_file'的形式 

③  深入辨析reuire和dofile

++++++++++ require'和'dofile ++++++++++

共同点: 查找'lua'代码的路径都是package.path,都是'执行'代码

差异点: 

     1)require只会在'第一次'加载文件的时候'执行'里面的代码,后续'不再重复'执行;

     2)dofile每次加载'都会'执行

说明: 强烈推荐使用'require'

二者的区别

其它详细参考

 

④  lua_code_cache

思考: 设置为'off'为什么不生效?

补充:

  1)如果 lua_code_cache 指令是'off'

  2)init_by_lua 处理程序将在'每个请求'上都'运行'一次,因此这种特殊模式下,总是每个请求创建一个'独立'的 Lua VM

相关参考 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值