DXP 7.0でのキャッシュサイズ、ライブ時間、レプリケーションの変更

この記事では、Liferay DXP 7.0でキャッシュのサイズ、TTL(Time to Live)、レプリケーションを変更するためにキャッシュを操作する方法を説明します。

決議

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

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

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

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

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

多くのLiferayサービスとは異なり、これはインターフェイスではなく基底クラスであり、利用可能なコンストラクタは2つの引数を受け取るだけです。 このリソース・ファイルは、 PortalCacheConfiguratorSettingsのコンストラクタに渡す classloader にある限り、任意の名前を付けることができます。 ファイル自体は、 キャッシュ のエントリのみを含み、 portal-cache-ehcache モジュールの中にあるものと全く同じように見えるはずです。

Liferayの既存の実装 (DDMRESTDataProviderCacheConfiguratorSettings, JournalMultiVMClusteredCacheConfiguratorSettings) には、 ライフサイクルイベント への依存関係も追加されています (具体的には。 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.properties のいずれかを設定しなければなりません。${cache.name} (キャッシュの動作を 1 つだけ変更したい場合)。 どちらのプロパティにも値が指定されていない場合は、 PortalCacheReplicatorで指定された定数にフォールバックします。

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

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