Предзагруженные объекты Join us for the first quarterly NGINX Community Call on July 22nd to connect and discuss NGINX development. english русский новости [en] об nginx скачать безопасность [en] документация faq книги [en] сообщество компания x.com blog njs ingress controller gateway fabric Предзагруженные объекты Предзагруженные объекты поддерживаются только в JavaScript-движке njs и недоступны в движке QuickJS. Для каждого входящего запроса в njs создаётся отдельная виртуальная машина. Это позволяет прогнозировать предсказуемое поглощение памяти или осуществить изоляцию запросов. Однако поскольку все запросы являются изолированными, то если обработчику запроса необходимо получить доступ к данным, ему нужно сначала их прочитать самому. Это неэффективно, особенно если объём данных большой. Это ограничение можно обойти при помощи разделяемого предзагруженного объекта. Такие объекты создаются неизменяемыми и не имеют цепочки прототипов: у них нет возможности изменить значения или добавить/удалить свойства в объектах/массивах. Работа с предзагруженными объектами Примеры работы с предзагруженными объектами в njs: доступ к свойствам по имени: preloaded_object.prop_name preloaded_object[prop_name] перечисление свойств: for (i in preloaded_object_name) { ... } применение встроенных методов, не изменяющих состояние, при помощи call(): Array.prototype.filter.call(preloaded_object_name, ...)