ブログトップ
カスタムフィールドアドバンスドの表示の高速化
2014年05月20日
SOY CMS 1.7.4のカスタムフィールドアドバンスドで
プラグインの詳細設定の項目のエクスポート・インポートと公開側の表示の高速化を追加しました。
(どちらも現時点ではβ版の機能ですので、その点はご了承ください。)
今回は表示の高速化についてを見ていきます。
カスタムフィールドで、フィールドを追加し過ぎると公開側の表示が遅くなります。
項目が50個を超えると表示に5秒かかるようになったりします。
フィールドを増やし過ぎるとなぜ遅くなるのかと言えば、
一つフィールドを追加すると、記事IDとフィールドIDを紐づけてデータベースからデータを取得し、
取得したフィールドIDから高度な設定の内容を加えて、
フィールド毎に用意されているcms:idを作成していく
という処理を行い、
フィールド分だけ上記の処理が発生するため、
フィールドを作りすぎると表示が遅くなります。
そこで、
フィールドが多すぎて表示が遅くなるときに、
データベースに読みに行く回数を制限して処理数を減らす機能を追加しました。
処理の具体的な内容ですが、
作成したフィールド毎に高度な設定としてラベルとの紐づけを行えます。
フィールド毎にラベルとの紐づけを行った上で、
公開側のブロックの設定でラベルブロックを選びます。
(ブログリンクブロックと他サイトラベルブロックでも動きます)
ラベルを指定して設定を保存します。
この状態で公開側のページを開くと、
高度な設定で設定したラベルと、常に表示するの指定をしているフィールド分だけ、
データベースから値を取りに行き、
取得した値のみ高度な設定とcms:idの処理を行うため、
処理数が少なくなった分だけ表示が速くなるという仕様になっています。
フィールド数が少ない時に高速化を行うと、
データベースのアクセスの際にラベル分も加味した検索が発生してしまうため、
表示が逆に遅くなってしまうこともありますので、
フィールドが多くて効果側の表示が遅くなった際でご利用ください。