私は現在、エクスプレスエンジンとejを使って、魅惑的なエンジンにノードサーバーを書いています。私の.ejsファイルの中には、それらの内部にネストされた部分的なもののための7 - 8個のインクルードステートメントがあります。私はこれがリソース集中型か、それがうまくいくかどうか疑問に思っていました。ステートメントを含むとパフォーマンスが低下しますか?
3
A
答えて
2
EJSメンテナーはこちら
まず、同じファイルを複数回連続して読み込んでいる場合、ファイルシステムはそのファイルをそのレベルでキャッシュします。
ただし、パフォーマンスを最大限に高めるには、オプションにcache: true
と設定します。 (docs)これを有効にするには、renderFile()
を使用するか、ファイル名を渡す必要があります。 Expressを使用している場合、NODE_ENV
をproduction
に設定すると、cache: true
が自動的に設定されます。
これは、ファイルが変更されないことを前提としています。つまり、ファイルを変更した場合、EJSはサーバープロセスを再起動するまで古いキャッシュバージョンを使用します。
+0
ありがとうございます。 – Programmer
1
I 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>
-Zから各部分は、HTMLの120個の以上の行を含みます。ここではそれが行く方法は次のとおりです。
- 最初のヒットは、サーバの再起動
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のようなときどきのピークを除いてはるかに時間がかかります(実際になぜキャッシュミスが起こるか説明できません)。
関連する問題
- 1. Perl:複数のファイルを読むとパフォーマンスが低下する
- 2. テーブルのパフォーマンスが低下します
- 3. "this->"を使用するとパフォーマンスが低下しますか?
- 4. [NSCursor set]を呼び出すと、パフォーマンスが低下しますか?
- 5. Javaクラスをオーバーライドするとパフォーマンスが低下しますか?
- 6. Matlab parfevalを使用するとパフォーマンスが低下しますか?
- 7. テーブルが多いとパフォーマンスが低下しますか?
- 8. Railsにログインすると、パフォーマンスが低下しますか?
- 9. BCryptパフォーマンス低下
- 10. fwrite()パフォーマンス低下
- 11. pl/sqlとmsqlが結合し、パフォーマンスが低下します
- 12. 平均を計算するとパフォーマンスが低下します
- 13. linq 2エンティティを使用するとパフォーマンスが低下します
- 14. setMinimumLoggingLevelをVERBOSEに設定するとパフォーマンスが低下します
- 15. のMySQL:パフォーマンスの低下が
- 16. Netty 4パフォーマンス低下
- 17. パフォーマンスの低下は
- 18. バックグラウンドサイズ:ChromeとSafariでカバーのパフォーマンスが低下しています
- 19. C++スタイルのキャストからパフォーマンスが低下しましたか?
- 20. IdentityServer 3のパフォーマンスが低下したMembershipReboot
- 21. Goメソッドで "this"を値渡しするとパフォーマンスが低下しますか?
- 22. AndroidでORMLiteのパフォーマンスが低下していますか?
- 23. TensorFlowは単純なネットワークではパフォーマンスが低下しますか?
- 24. OpenGLではプログラムのパフォーマンスが低下しますか?
- 25. 接続のパフォーマンスが低下しますか?
- 26. MSSQL:last_user_updateはインデックスのパフォーマンスが低下することを意味しますか?
- 27. 'Commit Retaining'を使用するとFirebirdのパフォーマンスが低下しますか?
- 28. MySqlのIN演算子を使用するとパフォーマンスが低下しますか?
- 29. C#大きなViewState名を使用すると、パフォーマンスが低下しますか?
- 30. MS Accessでサブフォームを使用するとパフォーマンスが低下しますか?
Profile it。パフォーマンスは絶対的な特性ではありません。 – zerkms
インクルードはおそらくキャッシュされています(少なくともOSによって、おそらくはejsによって)ので、最初にロードされたときにヒットするかもしれませんが、それ以降はほとんどないでしょう。 – jfriend00
ejsがインクルードをキャッシュするかどうかはどのように知ることができますか? – Programmer