包含语句在多大程度上会妨碍性能?



我目前正在编写一个节点服务器,使用express和ejs作为诱人的引擎。我的一些 .ejs 文件有 7 - 8 个包含嵌套在其中的部分语句。我想知道这是否是资源密集型的,或者是否会很好。

这里的EJS维护者。

首先,如果您连续多次读取同一文件,文件系统会将其缓存在该级别。

但是,如果您想要最大性能,请在选项中设置cache: true。(文档(您必须使用renderFile()或传入文件名才能使其正常工作。如果您使用的是 Express,则当NODE_ENV设置为production时,将自动设置cache: true

请记住,这假设您的文件永远不会更改。 即,如果您更改文件,EJS 将只使用旧的缓存版本,直到您重新启动服务器进程。

我已经测试了 29 个部分的包含加载时间:

<!DOCTYPE html>
<html lang="en">
<? console.time('ejsIncludeTime') ?>
<?include ../partials/head ?>
<body>
<? include ../partials/header ?>
<? include ../partials/a ?>
<? include ../partials/b ?>
<? include ../partials/c ?>
<? include ../partials/d ?>
<? include ../partials/e ?>
<? include ../partials/f ?>
<? include ../partials/g ?>
<? include ../partials/h ?>
<? include ../partials/i ?>
<? include ../partials/j ?>
<? include ../partials/k ?>
<? include ../partials/l ?>
<? include ../partials/m ?>
<? include ../partials/n ?>
<? include ../partials/o ?>
<? include ../partials/p ?>
<? include ../partials/q ?>
<? include ../partials/r ?>
<? include ../partials/s ?>
<? include ../partials/t ?>
<? include ../partials/u ?>
<? include ../partials/v ?>
<? include ../partials/w ?>
<? include ../partials/x ?>
<? include ../partials/y ?>
<? include ../partials/z ?>
<? include ../partials/footer ?>
<? console.timeEnd('ejsIncludeTime') ?>
</body>
</html>

a-z 的每个部分包含 120 行或更多行 html。事情是这样的:

  • 服务器重新启动后第一次命中ejsIncludeTime: 0.175ms
  • 随后的命中ejsIncludeTime0.078ms0.068ms0.058ms0.067ms0.077ms
  • 再次重新启动服务器并点击ejsIncludeTime: 0.157ms
  • 随后命中0.168ms(间隔几分钟后命中(、0.044ms0.052ms

因此,似乎在某种程度上涉及缓存。第一次命中始终需要 0.150+ms 的包含时间。随之而来的命中总是花费更少的时间,除了偶尔的峰值,如0.168ms(无法真正解释原因。也许缓存未命中(。

最新更新