msgbartop
システム開発とインターネットマーケティングについてデジタルスタジオのスタッフが投稿したブログです。
msgbarbottom

2006年9月2日 Zencart / osCommerceで商品表示速度が遅い

弊社がZencart/oscommerceのソースコードを見ている時に意外な発見をしました。以下のような条件下で運営されているユーザー様は是非ご覧ください。

・商品点数が約300点を超えるサブカテゴリーがある。(全体の商品点数ではありません)
・商品価格は特売価格のものが半分以上ある、または全てが特売価格である。
・キーワード検索で検索結果を表示するまでにやたらと”もたつく”感じがある。
・カテゴリBOXからカテゴリーをクリックし商品一覧を表示する際に”もたつく”感じがある。
・商品のソート(昇順、降順)をするのに時間がかかる。

もし、このような症状が少しでもあるようでしたら、Mysql、及びZencart/oscommerceのソースコードをチューニングすることで驚くほどブラウジングに 対するレスポンスがアップします。特に商品点数が1000点~を超えるようなサイトを運営されているお客様にはかなりの期待が持てます。

なぜか?
Zencart/oscommerceは検索結果や商品一覧表示をする前に、ユーザーが選択した検索条件や抽出条件、また管理画面で設定する一覧表示のリストをにその箇所における検索キーを基準にあらゆるデータベースへ情報を見に行きます。

ここから問題勃発
ここで上記のような条件下にあてはまると、極端にレスポンスが落ちます。
これは先日10000点ほどの商品情報をDBに格納、各サブカテゴリーには約500点前後の商品分けをしました。
この状態でカテゴリーからサブカテゴリーをクリックすると、商品の一覧表示まで1〜3分近くかかってしまいました。

確かに10000点という通常では考えられない個数なのでそれなりの覚悟はしていましたがここまでレスポンスが落ちるとは….
調査したところ、1商品に対する特売価格を呼び出しているソースコードに問題がありました。OSCは商品データベースに

products
products_description
categories_to_products

というデータベーステーブルが本来純粋な商品データを持っているテーブルですが、一覧表示するサブカテゴリー内の商品に特売価格が有る場合は

specials

というテーブルをさらにリレーショナルさせます。 → これが原因でした。

ここで specials を見に行くことによってPHPとMYSQLのレスポンスが極端に低下し、結果出力にも時間がかかるというものでした。

解決はできたのか?
specialsに格納されている特売価格を products にあたらな項目を作成し、同時に書き込むことで、products で一覧表示に必要なすべての項目表示ができるため表示に1秒とかかりません。
まさに数十倍の高速化です。ブラウジンした感じは商品点数が30点前後しか入っていないようなとても軽いレスポンスです。

もしこのように同じ症状でお悩みでしたらお問合せフォームよりご相談ください。

こちらの記事も参考にしてください。


オフィス用品のディスカウンター KLAT

関連する記事



Leave a Comment

Japan Store Directory