Appearance
理解预加载对象(Preloaded Objects)
提示
来自deepseek解释
原文链接:https://nginx.org/en/docs/njs/preload_objects.html
预加载对象仅在 njs JavaScript 引擎中受支持,在 QuickJS 引擎中不可用。
对于每个传入请求,njs 都会创建一个独立的虚拟机。这带来了诸多好处,例如可预测的内存消耗和请求隔离。然而,由于所有请求都是隔离的,如果请求处理程序需要访问某些数据,它必须自行读取这些数据。当数据量较大时,这种方式效率不高。
为了解决这一限制,引入了预加载共享对象。此类对象在创建后是不可变的,并且没有原型链:其值无法更改,属性也无法添加或删除。
使用预加载对象
以下是在 njs 中使用预加载对象的一些示例:
按名称访问属性:
jspreloaded_object.prop_name preloaded_object[prop_name]枚举属性:
jsfor (i in preloaded_object_name) { ... }使用
call()调用非修改型内置方法:jsArray.prototype.filter.call(preloaded_object_name, ...)