由于Pug模板中的mixins和JS代码,缓存是否有助于避免在使用Express框架渲染服务器端期间对性能造成影响?

问题描述

来自Express documentation

视图引擎缓存不缓存模板内容内容 输出,仅底层模板本身。风景还是 即使缓存已打开,每个请求也会重新呈现。

老实说,我不了解缓存在做什么以提高性能。因此,我将直接询问我担心什么会导致性能影响。缓存是否有助于避免由于以下mixin和/或JavaScript代码而导致的性能影响?

mixin TestMixin(parameters)

  -
    const {
      hasIcon = false,contextClass
    } = parameters;

    // Some thousands lines of JavaScript code width parameters validation and computings ...

  div The content of this mixin Could be arbitrarily large.

// ↑ Does caching reduce the performance impact because of above mixin initialization?
// (well,it's JavaScript "identifiers resolution")

在实际项目中,可以用Pug mixins实现的数千个UI组件代替TestMixin。在本地将pug编译为html时,我并不紧要,但我想在服务器端将pug实时编译为html时需要重新考虑Pug的用法

解决方法

如果您要从API提取少量数据,或者要创建一个小型静态网站,则不需要模板引擎。 模板引擎允许您在基于数据定义动态元素的同时重用静态网页元素。如果您的站点或Web应用程序是数据驱动的,则您更有可能受益于模板引擎。

是的,使用它有一个缺点,因为它会增加每个动态数据请求的编译时间。在这种情况下,缓存将无济于事,因为我们在每个新请求上使用新数据渲染新页面。缓存仅对静态HTML文件或模板有用。整体缓慢的页面渲染。而且,模板是在服务器端编译的。

无论如何,对于这种情况,有很多可用的替代方法,如今,市场上提供了许多前端模板,这些模板的作用远不止是模板化,例如,诸如Angular的前端框架提供了声明性模板,依赖项注入,端工具和集成的最佳实践来解决开发挑战。

在模板引擎的情况下,服务器也会将Pug / EJS之类的模板引擎编译为HTML,然后将其发送给客户端,如果您的站点逐渐变得越来越繁重,最终使其速度变慢,这与客户端框架(如angular)不同,react,vue.js,其中HTML页面在客户端(即浏览器)上呈现,使其比模板引擎更快,更高效。初始加载后,您会经历快速的网站渲染。有了它,缓存静态资源将带来额外的好处。