服务器上的角度2通用高速缓存呈现页面

有关角度通用的两个问题:

  • 我如何得到角度来缓存服务器端的呈现页面,因为它只需要在客户端进行初始响应需要大约2秒,因为angular每次都会在服务器端生成页面。

  • 在前端看起来像角是打破网站,self.context。(funcname)不存在,例如。 我所知道的这些问题与调用函数的范围有关,如果我不使用通用的(包括预引导),则会起作用。

  • 有任何想法吗。


    只是为了回答这个问题:

    我简单地在server.ts中做了一个自定义的解决方案:

    const cache = {};
    
    function ngApp(req, res) {
      let baseUrl = '/';
      let url = req.originalUrl || '/';
      res.setHeader('Cache-Control', 'public, max-age=300');
      if (cache.hasOwnProperty(url)) {
          var hit = cache[url];
          if (hit[0] > Date.now()) {
            res.status(200).send(hit[1]);
            return;
          }
      }
    
      res.render('index', {
        req,
        res,
        ngModule: MainModule,
        preboot: {
          appRoot: ['app'],
          uglify: false,
          buffer: true
        },
        async: false,
        baseUrl: baseUrl,
        requestUrl: req.originalUrl,
        originUrl: 'http://localhost:3000'
      },(err, html) => {
        cache[url] = [Date.now()+180000,html];
        res.status(200).send(html);
      });
    }
    app.get('*', ngApp);
    app.get('/', ngApp);
    

    所以基本上,我检查内存中的变量,如果我有一个现有的缓存条目为请求的url,如果没有,或者如果它已过期,然后我重新页面和更新/创建一个缓存项。

    这大大改善了后续请求的传送。 在本地它从大约1秒降到仅10ms。

    链接地址: http://www.djcxy.com/p/31377.html

    上一篇: angular 2 universal cache rendered pages on server

    下一篇: Do we require webpack for angular universal?