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();
あまり変更することがないような情報に対してはキャッシュしておくこととサイトの高速化に役立ちます。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。