了解预加载的对象

对于每个传入请求,njs 会创建一个单独的虚拟机。 这带来了很多好处,例如可预测的内存消耗 或请求隔离。 但是,由于所有请求都是隔离的, 如果请求处理程序需要访问某些数据, 它必须自己读取它。 这效率不高,尤其是在数据量很大时。

为了解决此限制, 引入了预加载的共享对象。 此类对象是不可变的,并且没有原型链: 它们的值不能更改,属性不能添加或删除。

使用预加载对象

以下是如何在 njs 中使用 preload 对象的一些示例:

  • 按名称访问属性:
    preloaded_object.prop_name
    preloaded_object[prop_name]
    
  • enumerate 属性:
    for (i in preloaded_object_name) {
        ...
    }
    
  • 使用以下方式应用非修改性内置方法 :call()
    Array.prototype.filter.call(preloaded_object_name, ...)