我目前正在编写一个节点服务器,使用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
- 随后的命中
ejsIncludeTime
:0.078ms
、0.068ms
、0.058ms
、0.067ms
、0.077ms
- 再次重新启动服务器并点击
ejsIncludeTime: 0.157ms
- 随后命中
0.168ms
(间隔几分钟后命中(、0.044ms
、0.052ms
因此,似乎在某种程度上涉及缓存。第一次命中始终需要 0.150+ms 的包含时间。随之而来的命中总是花费更少的时间,除了偶尔的峰值,如0.168ms(无法真正解释原因。也许缓存未命中(。