Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 July 03

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
В смысле?
источник

𝕄

𝕄𝕦𝕣𝕖𝕟𝕜𝕒... in NodeUA - JavaScript and Node.js in Ukraine
при обновлении биоса ноуты не горят, это не сложная задача
источник

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
Я узнал про обнову спустя неделю, биос сам обновился из центра обновлений:)
источник

Y

Yaroslav in NodeUA - JavaScript and Node.js in Ukraine
Коммунистическая партия Китая одобряет
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Почему Вы по выводу консоли подумали, что она синхронная?
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Что значит "не работает с изображениями"?
Если Вы оборачиваете HTML чем-то на каждом запросе, это уже не статика.
А что мешает записать в stream сначала head, потом контент файла, а потом footer? Зачем сначала вычитывать все из stream в память и передавать в новый stream, если можно сделать pipe?
источник

AS

Alexey Shultsev in NodeUA - JavaScript and Node.js in Ukraine
HTML контента оборачивается общим для всех страниц header и footer, не более того, я думал, что это небольшая оптимизация такая

А на счёт последовательного прочтения - каким образом вы предлагаете это делать?
У меня же несколько ReadStream'ов, как я могу запайпить их друг на дружку?
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
А в чем оптимизация? Меньше места на диске занимать?

Пайпайте их в write stream по очереди
источник

AS

Alexey Shultsev in NodeUA - JavaScript and Node.js in Ukraine
Типа такого?
[headPath, contentPath, footerPath]
 .map(filePath => fs.createReadStream(filePath))
 .forEach(stream => stream.pipe(res, { end: false }));
res.end();
источник

AS

Alexey Shultsev in NodeUA - JavaScript and Node.js in Ukraine
Оптимизация в том, чтобы банально читать меньший объем файла
Забыл сказать - я же кеширую прочитанный head и footer
Просто в мапу их складываю, и достаю их оттуда по необходимости
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Вроде того.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Судя по коду Вы их читаете каждый раз с диска.

Как мне кажется, отдать один файл стримом быстрее, чем целиком читать его в память на каждый запрос и склеивать.
Плюс, тогда Вы можете кешировать файлы целиком, что будет еще быстрее.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Мне кажется, что оптимизация сомнительная.
Вы делали benchmarks до и после оптимизации?
источник

AS

Alexey Shultsev in NodeUA - JavaScript and Node.js in Ukraine
Нет, конечно, это же чисто учебный проект
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
А, тогда понятно

Я уже начал писать о том, что статику нужно ложить на CDN)
источник

AS

Alexey Shultsev in NodeUA - JavaScript and Node.js in Ukraine
Вариант с кешом каждого файла рассматривал, думал, что будет слишком много оперативки есть
А чтение файла стримом - это свобода по объему файла и не очень долго, потому как файлы большими быть не могут по определению (проект чисто учебный опять же)
источник

AS

Alexey Shultsev in NodeUA - JavaScript and Node.js in Ukraine
Ага, это я и так знаю)
Спасибо за помощь
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
При большом количестве запросов опреративки может быть занято еще больше, так как Вы будете читать один и тот же файл целиком в память столько раз, сколько запросов придет. Со стримом такой проблемы не будет.

Второй момент. Не нужно ложить все файлы в память (если их мало, то можно, конечно же). Почитайте про LRU и LFU cache
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Не за что)
источник

AS

Alexey Shultsev in NodeUA - JavaScript and Node.js in Ukraine
Почитаю, спасибо
источник