Doctrineでは次のようにして検索結果をキャッシュしておくことができます。商品数やカテゴリー数が多い場合は一気にページが高速化するサイトもありますので場合によってはたいへん有用です。

$qb->getQuery()
   ->useResultCache(true, $lifetime)
   ->getResult();

EC-CUBEのデフォルトでもコード内で何箇所か使用されており、$lifetimeがキャッシュの有効時間です。

この$lifetimeは設定ファイルによってデフォルトで3600秒 = 1時間と指定されています。src/Eccube/Resource/config/doctrine_cache.yml.distをご確認ください。

この秒数を変更するにはapp/config/eccube内にdoctrine_cache.ymlというファイルを作成し、新しい設定を記載するのが良いでしょう。

例えば下記のようになります。lifetime: 86400と書くことでキャッシュの持続時間を1日に変更しています。

doctrine_cache:
  metadata_cache:
    driver: array
    path:
    host:
    port:
    password:
  query_cache:
    driver: array
    path:
    host:
    port:
    password:
  result_cache:
    driver: array
    path:
    host:
    port:
    password:
    lifetime: 86400 //キャッシュ期間を1日に変更
    clear_cache: true
  hydration_cache:
    driver: array
    path:
    host:
    port:
    password:

 

もちろん、場合によっては設定ファイルでなくコードに直接持続時間を書いても問題ありません。

$qb->getQuery()
   ->useResultCache(true, 86400)
   ->getResult();

あまり変更することがないような情報に対してはキャッシュしておくこととサイトの高速化に役立ちます。