为什么Angular Universal中的res.render需要这么长时间?

Jon*_*ras 3 node.js express angular-universal angular angular5

我正在构建一个Angular Universal App,现在我所拥有的只是该网站的结构。我所做的所有事情都像教程中有关为Angular Universal转换我的应用程序一样。

console.log("got Request " + new Date());
res.render(join(DIST_FOLDER, 'browser', 'index.html'), { req , time: true}, 
   function(err, html) {
      console.log("finished Rendering " + new Date());
      res.send(html);
   }   
);
Run Code Online (Sandbox Code Playgroud)

渲染需要3个半秒。.对我来说,这似乎是很长的时间。同样在Chrome TTFB中的DeveloperTools中为3.5秒。而且该应用程序除了路由之外什么也不做。我不希望我的未来应用这么慢。

是否有人知道这是正常现象还是需要改进的地方?Github回购与问题 https://github.com/Joniras/slow-universal-rendering-example

设置工作区并运行角度通用:

npm install   
npm run build:universal   
npm run serve:universal     
Run Code Online (Sandbox Code Playgroud)

版本:
Angular CLI: 1.5.0
Node: 6.11.5 OS: win32 x64 Angular: 5.0.1 ... animations, common, compiler, compiler-cli, core, forms ... http, language-service, platform-browser ... platform-browser-dynamic, platform-server, router @angular/cdk: 5.0.0-rc0 @angular/cli: 1.5.0 @angular/flex-layout: 2.0.0-beta.10-4905443 @angular/material: 5.0.0-rc0 @angular-devkit/build-optimizer: 0.0.33 @angular-devkit/core: 0.0.20 @angular-devkit/schematics: 0.0.35 @ngtools/json-schema: 1.1.0 @ngtools/webpack: 1.8.0 @schematics/angular: 0.1.3 typescript: 2.4.2 webpack: 3.8.1 express 4.16.2
我必须将样式设置为代码,因为否则我将无法发布

Dav*_*vid 6

您的代码(UserService)中有3000毫秒的超时

setTimeout(() => {
          resolve(this.loggedInUser);
        }, 3000);
Run Code Online (Sandbox Code Playgroud)

  • @Ayyash setTimeout 是一个 javascript api,可以在浏览器和节点服务器上使用 https://nodejs.org/de/docs/guides/timers-in-node/ (3认同)