то внутри express route handler ответы для разных запросов могут перезаписаться друг на друга? о_О
Вот оригинал:
Since Node is single-threaded, that means that all your users are going to be sharing the same memory space. In other words, unlike in the browser, you have to be careful not to store user-specific data in closures where other connections can get at it. For this reason, I like to use res.locals to store temporary user data that’s only available during that user’s request/response cycle
Нет
Правда
а откуда инфа?
Но как? Разве не смотря на однопоточность, нельзя заранее аллоцировать куски памяти для каждого нового подключения и таким образом решить проблему кросс-доступа к одной и той же ячейке?
Можно, ошибка же будет в твоём коде
А, ну если писать и читать переменную в глобал пространстве на каждый реквест - не мудрено, что будет полная ёбань Видимо автор всё-таки, что-то перепутал, вот статья https://medium.com/javascript-scene/introduction-to-node-express-90c431f9e6fd , ищите по словам memory management
Всё правильно он написал you have to be careful not to store user-specific data in closures where other connections can get at it. Если есть переменная из замыкания, то она шарится между запросами
но ведь в замыкание route handler другой запрос никак не попадёт… смысл написанного тогда? уходя - гасите свет, тушите огонь водой, не шарьте между разными юзерами один стейт в общем, я понял, что он имел в виду, спасибо за успокоение))
Вот пример кода, https://pastebin.com/JGtUXWPs На 1 запросе в секунду будет всегда 1 На 100 запросах в секунду будет от 1 до 100
в этом примере foo находится в глобальном замыкании, к этому вопросов вообще нет его предложение звучало как «не храните внутри замыкания route handler что-то, ведь оно перезапишется на следующий вызов обработчика», поэтому-то я и всех взбаламутил)
Там написано что если ты получаешь через замыкание переменную, то другие функции, которые получают эту же переменную через замыкание, будут работать с теми же данными
очевидность этого утверждения затуманила мой рассудок и я второй раз неправильно перевёл предложение))
Обсуждают сегодня