Нужно ли удалять домены node.js? Когда это должно быть сделано?
У меня есть приложение Express, и я использую домены для каждого полученного запроса. Я добавил промежуточное программное обеспечение, чтобы обеспечить дальнейшее выполнение промежуточного программного обеспечения "внутри" домена.
app.use(function(req, res, next) {
var d = domain.create();
d.req = req;
d.add(req);
d.add(res);
d.run(next);
});
Кроме того, некоторый код, который выполняется во время обработки запроса, использует process.domain.req
чтобы получить ссылку на первоначальный запрос, его заголовки, файлы cookie и т. д. Я делаю это потому, что не могу передать req
прямо к этому коду. Этот странный код является своего рода межсредовым кодом (для браузера и для узла), который не знает, где он выполняется. Под капотом некоторые базовые слои реализованы по-разному для Node и для браузера, особенно для сетевого кода. Для браузера это XMLHttpRequest, а для NodeJS - специальная оболочка, основанная на request
Lib.
Я беспокоюсь о утечках памяти. Что ссылки на req
хранится на домене. Могут ли они хранить эти вещи и не собирать их?
Кроме того, мне нужно регулярно распоряжаться доменами, или мне нужно распоряжаться ими в некоторых случаях, когда возникают проблемы / ошибки?
1 ответ
Обычно вы располагаете свой домен в случае ошибки или завершения, вот пример https://gist.github.com/regality/3061748.
Однако, насколько я понимаю, метод domain.dispose() считается устаревшим. Подробности смотрите в этом выпуске git: https://github.com/joyent/node/issues/5018
Далее, в соответствии с документом, рекомендуется, чтобы вы убили процесс домена, если вы столкнулись с ошибкой. Эта ссылка имеет хорошее объяснение и пример.