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

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

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

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

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

 

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

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

関連するカスタマイズ

decimalタイプのオプション、precisionとscaleとは?... テーブルの定義ファイル(dcm.yml)を見てみると、price02やtaxなど金額関係のカラムにはdecimal型が使われていることが分かります。 ProductClass.dcm.ymlには下記のように記載があります。 他のカラムの定義には見かけないprecisionとsca...
マイグレーションでショップ設定を変更・共有する方法... 弊社ではショップ設定を変更する時は必ずマイグレーションファイルの実行により行います。 例えば初期状態では有効になっている仮会員を無効にしたり、自動ログイン機能をONにすることを前提にカスタマイズを行なっていく場合などです。 上記コマンドを実行することでマイグレーションファイルが作...
1サイトから複数のデータベースに接続する方法... 複数のEntityManagerを利用し、複数のデータベースからデータを取得したり更新する方法はないのかというご質問をよくお受けします。 既存サイトとの連携やモールショップ化では頻繁に必要となってくる技術かと思います。 なかなか説明するのは難しいのですが、Doctrineの設定上でア...
既に存在するIDやRankの最大値を取得する方法... 新規データ作成やプラグインのマイグレーション作成の際に、既に存在するデータの最大値を取得したい場合があります。 そんな時は直接SQLを発行しても良いのですが、Doctrineを使用すると便利です。 商品IDの最大値を取得する方法(例:dtb_product) 次のようにQuer...