DXP 7.0でのキャッシュサイズ、存続時間、およびレプリケーションの変更

この記事では、サイズ、生存時間(TTL)、および複製を変更するために、Liferay DXP 7.0でキャッシュを操作する方法について説明します。

解決

デフォルトのキャッシュサイズとエントリTTLを変更する

混乱の潜在的な原因は、ehcache.multi.vm.config.locationポータルプロパティです。 このプロパティは、以前のLiferayプラットフォームのリリースで、Liferayプラットフォームのデフォルトのキャッシュサイズや動作を変更するため、またはLPS-17296より前のリリースで特定のキャッシュサイズや動作を変更するときに使用されましたLiferayプラットフォームが機能を追加したときプラットフォームのフックプラグインを使用して個々のキャッシュ設定を変更します。

このポータルプロパティはLiferay DXPでも機能しますが、以前のリリースのように絶対パスを指定することはできなくなりました。 むしろ、EhcachePortalCacheManagerソースコードは、 クラスパス 相対値のみのみを受け入れることを示しています。 つまり、このポータルプロパティで指定されるファイルは、com.liferay.portal.cache.ehcacheバンドルのバンドルフラグメントとして存在するか、LiferayアプリケーションのWEB-INF / classesに存在する必要があります。 。

特定のキャッシュサイズとエントリTTLを変更する

6.2で追加されたキャッシュ構成フックメカニズムに沿って、Liferayは通常、キャッシュ構成ファイルを完全に置き換えるのではなく、新しいキャッシュを追加するか、既存のキャッシュを変更することだけを期待します。 PortalCacheConfiguratorSettingsサービスを提供するOSGiコンポーネントを作成することにより、Liferayキャッシュのサイズとキャッシュエントリのデフォルトの存続時間をカスタマイズできます。

多くのLiferayサービスとは異なり、これは実際にはインターフェースではなく基本クラスであり、使用可能な唯一のコンストラクターは、2つの引数を受け入れます。 このリソースファイルは、限り、それはあなたがのコンストラクタに渡すクラスローダで見つけることができるように、あなたが望むものは何でも名前を付けることができますPortalCacheConfiguratorSettings。 ファイル自体にはキャッシュエントリのみが含まれており、portal-cache-ehcacheモジュール内のものとまったく同じに見えるはずです。

Liferayの中の既存の実装では、(DDMRESTDataProviderCacheConfiguratorSettingsJournalMultiVMClusteredCacheConfiguratorSettings)も上の依存関係を追加ライフサイクル・イベント(具体的には、PORTAL_INITIALIZEDの構成が起動しないように)すぎる早く。

キャッシュレプリケーションの変更

MultiVMEhcachePortalCacheManagerConfiguratorは、ポータルプロパティで設定された値に基づいて、キャッシュレプリケーションの発生方法を決定します。 DE-28より前のバージョンのLiferayを使用している場合は、LPS-73830で説明されているように、キャッシュはehcache.multi.vm.configで指定されているデフォルトの構成ファイルで宣言する必要があることに注意することも重要です。 .locationポータルプロパティの変更を有効にするため。

DE-26以前は、設定する必要があるプロパティ名はehcache.cluster.link.replicator.propertiesでした。

ehcache.cluster.link.replicator.properties.TEST_CACHE = replicatePutsViaCopy = true、replicateUpdatesViaCopy = true

DE-26により、Liferayは、クラスタリングをCEで利用できるようにする変更の準備を開始しましたが、Liferayは、クラスターにリンクされたレプリケーションメカニズムをEEの顧客のみに残すことを選択しました。 潜在的な混乱を避けるために、プロパティ名はDE-26でehcache.replicator.propertiesに変更され、その後7.0.4 GA5でCEユーザーが利用できるようになりました。

ehcache.replicator.properties.TEST_CACHE = replicatePutsViaCopy = true、replicateUpdatesViaCopy = true

混乱を避けるために、これらをehcache.replicator.propertiesと呼びます。DE-25以前を使用している場合は、プレフィックスをehcacheからehcache.cluster.linkできます。

実装レベルでは、Liferayプラットフォームはehcache.replicator.properties.defaultプロパティをチェックし、ehcache.replicator.propertiesで指定されたキャッシュ固有のプロパティをマージします。${cache.name}キャッシュごとに

したがって、キャッシュがレプリケーションを処理する方法に変更を実装するには、portal-ext.propertiesを更新して、ehcache.replicator.properties.default(デフォルトを変更する場合)またはehcache.replicatorを設定する必要があります。 。プロパティ。${cache.name} (1つのキャッシュの動作のみを変更する場合)。 どちらのプロパティでも値が指定されていない場合、値はPortalCacheReplicator指定された定数にフォールバックします。

コード内でputまたはremoveイベントのすべての複製を明確に防止する場合は、PortalCacheHelperUtilで対応するメソッドを使用できます。 更新は、単にエントリをキャッシュに入れるためのメソッドを使用することに注意してください。

この記事は役に立ちましたか?
1人中1人がこの記事が役に立ったと言っています