何も壊さないPrestaShopの高速化
このスキルは、実際のPrestaShopストアで計測・適用された内容をまとめたものです:本当に効果のある改善、どの順序で行うべきか、そしてどこでつまずくか。すべて匿名化されています。
絶対に破らないルール
- 各変更前にバックアップを取る。 変更するファイル、設定行、サーバー設定のそれぞれについて。そして、その変更を元に戻す
volver.shを作成する。詳細はreferencias/01-metodo-seguro.mdを参照。 - 同じ方法で事前と事後を測定する。 基準となる測定なしに改善したとは言えない。方法は
referencias/02-medir.md、ツールはscripts/medir.pyを参照。 - 一度に一つの変更、有効と無効を切り替えてテストする。 オプションが効果があるかどうかを確認するには、有効時と無効時で交互に(A、B、A、B)測定し、複数回ロードする。改善がない場合は元に戻す。
- ストアオーナーの許可なく本番環境では作業しない。 何を触るかを事前に伝える。ストアのコピーがあれば、まずそこでテストする。
- 結果だけでなく、最初も確認する。 主要なページで以前と同じHTTPステータスコード、新しいJavaScriptエラーがゼロ(既存のエラーはカウントしないが記録する)、画像が正しく読み込まれ、カートとチェックアウトが機能すること。
- 各変更について報告する: 何を変更したか、バックアップの場所、元に戻す方法、測定結果。
作業順序(効果が高い順から低い順)
| ステップ | 内容 | 参照先 |
|---|---|---|
| 1 | ベースラインの測定(モバイル4G、初回訪問と2回目訪問) | referencias/02-medir.md |
| 2 | 画像:商品画像、テンプレート、バナー/CMSのWebP化 | referencias/03-imagenes-webp.md |
| 3 | ペイントブロックリソース:フォント、アイコン、jQuery、reCAPTCHA、CCC | referencias/04-bloqueos.md |
| 4 | 静的ファイルのブラウザキャッシュ | referencias/05-cache-navegador.md |
| 5 | サーバー:OPcache、MariaDB、PHP-FPM、セッション、DNS、CPU | referencias/06-servidor.md |
| 6 | 外部呼び出しやブロックを行うサードパーティモジュール | referencias/07-modulos-terceros.md |
| — | すでに踏まれた落とし穴(開始前に読むこと) | referencias/08-trampas.md |
ほとんどの場合、最も重いのは画像です。2〜5MBのPNGバナーはよくあります。あるストアでは、バナーをWebPに変換するだけで、元の画像に一切触れずにトップページのサイズが26.5MBから4.8MBに減少しました。
ツール
| スクリプト | 目的 |
|---|---|
scripts/medir.py | 実ブラウザ(Playwright)でモバイル、低速4G、CPU×4倍の環境で計測:FCP、LCP、読み込み時間、KB、リクエスト数、ブロックリソース、最大の要素、JavaScriptエラー(初回訪問と2回目訪問) |
scripts/revisar_cache.py | ウェブサイトのCSS、JS、画像、フォントがブラウザにどの程度キャッシュされるか、およびページとJSONがキャッシュされないことを確認する。読み取り専用。 |
scripts/webp_al_lado.py | フォルダ内の各画像の隣に imagen.png.webp を作成(元の画像は変更しない)。元のサイズより10%以上小さくなった場合のみ作成。元に戻すためのログを残す。 |
すぐに適応できる設定テンプレートを plantillas/ に用意:nginxとApache用のWebPネゴシエーション、.htaccess用の安全なブラウザキャッシュブロック、WebPが存在する場合のみ要求するSmartyパーシャル、モジュール開発者への通知テンプレート。
完了時の報告方法
- ストアごとに何を変更したか、変更前と変更後の数値。
- バックアップの場所と元に戻すための正確なコマンド。
- 未完了の項目と、ストアオーナーが決定すべき内容。
- 確認したが変更しなかったもの(既存のエラー、疑わしいモジュールなど)。