16テンプレートキャッシュ
Thymeleafは、マークアップとテキスト用の一連のパーサーのおかげで機能します。これは、パターンを順番に解析します(開始タグ、テキスト、終了タグ、コメントなど)。 そして、一連のプロセッサ (各タイプの動作に1つ)は、イベントのパターン解析シーケンスを適用および変更して、元のパターンとデータを組み合わせることで期待される結果を作成します。
また、デフォルトでは、分析されたパターンが保存されるキャッシュも含まれます。 テンプレートファイルを処理する前に読み取り、分析した結果として発生するイベントのシーケンス。 これは、Webアプリケーションで作業する場合に特に役立ち、次の概念に基づいています。
- I / Oは、ほとんどすべてのアプリケーションで最も遅い部分です。
- メモリ内の既存のイベントシーケンスを複製することは、テンプレートファイルを読み込んで解析し、そのイベントの新しいシーケンスを作成するよりも常に高速です。
- Webアプリケーションには通常、数十個のテンプレートしかありません。
- テンプレートファイルのサイズは中小規模であり、アプリケーションの実行中は変更されません。
これはすべて、大量のメモリを失うことなく、Webアプリケーションで最も使用されるテンプレートをキャッシュできるという考えにつながります。また、実際には、決して変わらない。
そして、このキャッシュをどのように制御できますか? 最初に、Resolver Templateでキャッシュを有効または無効にできること、そして特定のテンプレートでのみ動作することができることを学びました:
// true templateResolver.setCacheable(false); templateResolver.getCacheablePatternSpec().addPattern("/users/*");
さらに、デフォルトのデフォルトCacheManager実装のインスタンスである独自のCache Managerオブジェクトをインストールすることにより、構成を変更できます。
// 200 StandardCacheManager cacheManager = new StandardCacheManager(); cacheManager.setTemplateCacheMaxSize(100); ... templateEngine.setCacheManager(cacheManager);
javadoc API org.thymeleaf.cacheを参照してください。 キャッシュの設定の詳細については、 StandardCacheManagerを参照してください。
エントリはテンプレートキャッシュから手動で削除できます。
// templateEngine.clearTemplateCache(); // templateEngine.clearTemplateCacheFor("/users/userList");