この記事では、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の対応するメソッドを使用できます。 更新は単にキャッシュにエントリを入れるためのメソッドを使用することに注意してください。