WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです

「EWWW Image Optimizer」プラグインを有効にして画像をアップロードしたらサイトが重くなる現象と対策

公開日:2019(令和元)年6月17日/最終更新日:

WordPressのトラブルシューティング



WordPressのサイトで「EWWW Image Optimizer」に限らずアップロードした画像を自動で縮小(圧縮)するプラグインを導入されている方は非常に多いと思います。

でも私と同じようにいつも通り画像をアップロードしたら管理画面(バックエンド)、表示画面(フロントエンド)ともなんだか非常に動作が重くなったという方もいるのではないでしょうか??

私の場合「何だろう・・」と思ってサーバーの状況を確認したら、なんとすごい高負荷状態になっていました(つまりサーバーの処理が追い付かず、CPUもメモリも全開状態)。自分で立てているサーバーならともかく、他の契約者とシェアしているレンタルサーバーですからこの状況が続いたり、頻発したりすると最悪契約解除なんてこともありますから早めに対処しないといけません。

幸いその時アップロードしたのは2つの画像をアップロードした時だったのでしばらくして処理が終われば元通りにはなりましたが、これがたくさんの画像をアップしたときだったらと思うとちょっとドキドキしました。

今回は同じような現象で困っている方がいたら・・ということで私の行った対策を紹介しておこうと思います。

画像をアップロードしたらサイトが重くなった原因

今回の高負荷はデジタル一眼レフで撮ったビッグサイズの画像をそのままアップロードしたことが原因でした。

画像のアップロードを行うとWordPress側では

  1. 画像の紐づけ(WordPressのメディアに認識されるようにする)
  2. 指示されているいろいろな大きさの画像を作る

という作業をします。「EWWW Image Optimizer」はこの処理の間に画像の最適化を行います。詳しくどの段階でというのは不明なのですが、通常のアップロード作業と比べてWordPressの動作に負荷がかかる=サーバーに負荷がかかるのは確かです。

事前にそれなりなサイズの画像へ圧縮してからアップロードすればこの問題は起こりにくくなるのは間違いないですが、事前に圧縮や加工するのが面倒だからアップロードした時に自動で圧縮されたらと思ってこうした圧縮プラグインを使う方が多いわけでしょうから何とかしたいところではあるものの、こればかりはサーバーの処理能力(契約)によるところなので、何が何でも・・・とお考えでしたらより高額なプラン(CPUやメモリの容量が大きいプラン)へ変更するしかなさそうです。

そうではなく、単純に画像アップロードと同時に走る最適化のみを停止して、アップロード処理が完了してから任意で画像の最適化ができる方法を次で紹介します。

「EWWW Image Optimizer」でアップロードと同時に最適化をしないようにする方法

「EWWW Image Optimizer」の昔のバージョンでは、同時最適化(圧縮)をしない設定がプラグインの設定画面からできたようですが、現在のバージョン(私の場合は4.8.0)ではメニュー項目から削除されていますので、特殊な設定が必要です。

※この作業はWordPressを動かすための重要なファイル「wp-config.php」へ直接指示する方法となりますので、「wp-config.php?」という方や編集に自信のない方にはおすすめしません。

FTPで「wp-config.php」をダウンロードして開いた後、以下のようにコードを追加し、元の場所へアップロードすることで「EWWW Image Optimizer」のアップロード同時圧縮処理を停止することができます。

編集するコード

define('WP_DEBUG', false);

の下に

define('EWWW_IMAGE_OPTIMIZER_NOAUTO',true);

を追加します。

設定後私のサイトで試したところ自動最適化が止まっており高負荷もなくなりました。

この対応でアップロード時の自動最適化は行われなくなりますから、後からメディアを開いて手動で最適化する必要は出てきます。が、サイトが高負荷で停止してしまったり、最悪サーバー契約が危うくなるという懸念は払しょくされるわけですから、同じ現象が出ているようでしたら早めに対応した方がいいでしょう。

「EWWW Image Optimizer」そのほかにもいろいろと設定画面にない項目の制御ができるようです。公式ページのOverride Optionsに掲載されています。

※基本的に今回の自動最適化と同じように

define('オプション名',動作);

で機能を有効/無効にできるようですが、公式ページの参考コードのままコピーして使うと、きちんとコードがエンコードされていないためエラーが出ます(サイトが表示されなくなります)ので気を付けてください。

著:清水 由規, 著:清水 久美子, 著:鈴木 力哉, 著:西岡 由美, 読み手:星野 邦敏, 読み手:吉田 裕介
¥2,889 (2024/02/08 17:07時点 | Amazon調べ)