Decoroll
ロールスクリーンのOpenCartストア。価格計算機とチェックアウトを修正し、その後のパフォーマンス改善でデータベースの負荷を下げ、ホスティング会社のCPU制限を解除させました。

課題
ロールスクリーンのストアでは、価格計算機とチェックアウトの修正が必要でした。さらにその後、ホスティング会社からサービス停止寸前の状態に。サイトとデータベースが1日のCPU上限の約2倍を使っており、原因は誰にもわかりませんでした。
解決策
- 価格計算機:正しい端数処理(以前はきりのいい金額にも1 UAHが加算されていました)、複数商品でカート合計が1〜2 UAHずれる問題の解消、価格の計算中は「カートに追加」ボタンをロックして低速回線で誤った価格のまま注文されないように、そしてhttp/httpsの混在で計算リクエストが失敗しないように。
- チェックアウト:住所欄が配送方法(宅配の住所または営業所)に合わせて切り替わり、ブラウザーの自動入力が地域欄を埋めなくなり、Chromeが管理者の保存済みパスワードを注文フォームに入れることもなくなりました。
- メール:お問い合わせフォームのメッセージはストアのメールボックスから、訪問者をReply-Toに設定して送信するようにし、ホスティング会社に拒否されなくなりました。
- SEO:約550件の古いリダイレクトを削除し、画像URLとすべての商品フィードの言語プレフィックスを修正、robots.txt内でlocalhostを指していたサイトマップを修正しました。
- CPUインシデント:文書にまとめた調査で根本原因が判明しました。テーマ内の相対リンクと検証されていないフレンドリーURLが、クローラーにとって無限のページ空間を生み出していたのです。現在は、ネストしたURLをPHPの実行前にリダイレクトで正規化し、リンクを修正し、データベースのインデックス8つとURLキャッシュを追加し、セッションテーブルを整理し、画像処理を堅牢化し、1 GBに達していたエラーログを止め、ボット対策付きでサイトをCloudflare配下に移しました。すべての変更の前に、検証済みのデータベースバックアップを取っています。
- 開発環境:Docker環境とローカル設定を整え、プロジェクトをgitで管理するようにしました。
成果
商品ページの表示1回あたりに読み込む行数:619,950 → 0。データベース内のセッション数:57,040 → 6,777。サイトマップ:1.12秒 → 0.16秒。修正後、トップページは0.20秒、商品ページは0.52〜0.63秒で応答します。ホスティング会社は制限を解除しました。