intra-mart Accel Platform セットアップガイド 第29版 2019-08-01

5.3.4.6. グローバルナビキャッシュ

intra-mart Accel Platform のグローバルナビキャッシュについて設定します。
グローバルナビキャッシュは intra-mart Accel Platform 標準テーマを使用した場合に利用されます。

コラム

グローバルナビキャッシュ設定は テナント管理機能 に含まれています。

  1. 「ProjectNavigator」内の <conf/im-ehcache-config/menu-dropdown.xml> ファイルをダブルクリックで開き、「ソース」タブを選択してください。
  2. <im-ehcache-config>/<cache> の内容を運用規模に応じて変更します。
<cache
  name="IM_TENANT-MENU_DROPDOWN"
  enable="true"
  max-bytes-memory="62M"
  time-to-live-seconds="259200"
  time-to-idle-seconds="259200"
/>

コラム

「max-bytes-memory」及び、「max-bytes-disk」属性が設定されている場合、Cacheにオブジェクトを登録する際に、そのオブジェクトのサイズの計算処理が行われます。
この際、登録するオブジェクトが、別のオブジェクトの参照を大量に持つ場合、計算処理に時間がかかりパフォーマンスの低下の原因となる可能性があります。
登録するオブジェクトが1000以上の参照を持つ場合、下記のようなメッセージがログに出力されます。
The configured limit of 1,000 object references was reached while attempting to calculate the size of the object graph.
Severe performance degradation could occur if the sizing operation continues.
This can be avoided by setting the CacheManger or Cache <sizeOfPolicy> elements maxDepthExceededBehavior to "abort" or adding stop points with @IgnoreSizeOf annotations.
If performance degradation is NOT an issue at the configured limit, raise the limit value using the CacheManager or Cache <sizeOfPolicy> elements maxDepth attribute.
For more information, see the Ehcache configuration documentation.
このログが出力される場合は、キャッシュに格納するオブジェクトの構成を見直すか、「max-bytes-memory」または、「max-bytes-disk」の代わりに、「max-elements-on-memory」または「max-elements-on-disk」の利用を検討して下さい。

5.3.4.6.1. キャッシュするオブジェクトの単位

グローバルナビキャッシュは、ユーザ単位でキャッシュされます。
そのため、キャッシュするオブジェクト数は、利用ユーザ数によって見積もります。

5.3.4.6.2. キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = ((1) × (2) + (3) × (4) + (5)) × (6)

(1) ... 各メニューアイテムに設定されている内容サイズ(平均600byte)
(1) = (1a) + (1b) + (1c) + (1d) + (1e) + (1f) + ((1g) × (1h))
(1a) ... メニューアイテム毎に出力されるHTMLのバイト数
(1b) ... メニューアイテムIDのバイト数
(1c) ... URLのバイト数
(1d) ... メニューアイテム表示名
(1e) ... メニューアイテム表示オプション(ポップアップ表示、iframe表示など)
(1f) ... 画像情報
(1g) ... 引数(キー+値)のバイト数
(1h) ... 引数の数
(2) ... 表示されるメニューアイテムの数
(3) ... 各メニューフォルダに設定されている内容サイズ(平均150byte)
(3) = (3a) + (3b) + (3c)
(3a) ... メニューフォルダ毎に出力されるHTMLのバイト数
(3b) ... メニューフォルダ表示名
(3c) ... 画像情報
(4) ... 表示されるメニューフォルダの数
(5) ... グローバルナビが常に出力するHTML(700byte)
(6) ... 利用ユーザ数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

(600 × 50 + 150 × 10 + 700) × 2000 = 64400000
⇒ 62MB

コラム

上記を算出するために利用している各要素の想定数については以下の通りです
  • 表示されるメニューアイテムの数 : 50
  • 表示されるメニューフォルダの数 : 10
  • 利用ユーザ数 : 2000