Медленная статическая подача файлов с 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');
Потому что экспресс передаст этот файл через промежуточное ПО разрешения пути регулярных выражений, прежде чем передать файл. Если у вас есть тонна маршрутов, это также может замедлить время запроса.
Надеюсь, это поможет!