Медленная статическая подача файлов с Node в Ubuntu

Мы используем Testem для обслуживания нескольких файлов HTML (шаблонов). Под прикрытием Testem использует метод Express "res.sendfile" для отправки статического файла обратно клиенту. На компьютерах Mac это очень быстро - 1-2 мс на файл согласно трассировке сети Chrome. Однако на машине с Ubuntu это занимает 39 мс.

Это на последнем стабильном узле - 0.10.29. Testem использует Express 3.1.

Любые предложения о том, что может вызвать это или как я могу диагностировать это дальше?

1 ответ

Обычно я работаю со статическими файлами напрямую, используя:

app.use( express.static(__dirname+'/public') );

промежуточное программное обеспечение. Ваши статические файлы будут храниться в

/<app-path>/public

Это позволит вам получить доступ /<app-path>/public/some.html в:

http://yoursite.com/some.html

Если вы положите file.html в /<app-path>/public/html/, следующее решило бы:

http://yoursite.com/html/file.html

http://yoursite.com/public/html/file.html

Если желаемый результат состоит в том, чтобы иметь чистые URL без расширений, то мое предложение не подойдет. Однако, если вы не возражаете против расширений файлов в URL-адресах, статическое промежуточное ПО должно сократить время запроса, возможно, даже значительно. Кроме того, возможно, шаблонизатор, как dust или же jade может помочь? Это позволит вам использовать res.render п.

Дело в том, что я видел увеличение времени запроса при использовании:

res.sendfile(somepath +'/some.html');

Потому что экспресс передаст этот файл через промежуточное ПО разрешения пути регулярных выражений, прежде чем передать файл. Если у вас есть тонна маршрутов, это также может замедлить время запроса.

Надеюсь, это поможет!

Другие вопросы по тегам