前書き

このチュートリアルでは、WP Super CacheとJetpack Photonプラグイン、およびWebサーバーとしてNginxを使用して、WordPressのパフォーマンスを最適化する方法を説明します。 この設定により、WordPressサイトは、前述のプラグインが提供するキャッシュ技術を活用することで、同時ユーザー容量を大幅に増やすことができます。

WPスーパーキャッシュは、WordPressページを静的なHTMLページとしてキャッシュすることにより、既にキャッシュされているページのページリクエストをWordPress PHPスクリプトで処理する必要がないように機能します。 通常、サイトのほとんどの訪問者はWordPressページのキャッシュバージョンを表示するため、サーバーはより多くのユーザーにサービスを提供するための処理能力を備えています。 WP Super CacheプラグインはDonncha O Caoimhによって開発されました。

Jetpack Photonは、独自のコンテンツ配信ネットワーク(CDN)を介してWordPress画像をキャッシュおよび提供することにより機能する画像高速化サービスです。 Photonは、Jetpack Team of Automatticによって開発されたJetpackプラグインに含まれるモジュールの1つです。

前提条件

このチュートリアルを実行するには、WebサーバーとしてNginxを使用するWordPressサーバーが必要です。 それがない場合は、これらのチュートリアルを使用して作成できます。

プラグインの要件または制限

WPスーパーキャッシュは、クエリ引数をNginxに渡すと機能しないため、クエリ引数を使用するプラグインでは機能しません。 また、このため、WordPressの_Default Permalink_設定(WordPressのページ番号を引数として使用する)を*使用しない*必要があります。

Jetpack Photonの制限:

  • 無料のWordPress.comアカウントが必要なJetpackを有効にするには、サイトをWordPress.comに接続する必要があります

  • WordPressサイトはポート80でリッスンする必要があります(PhotonはHTTPSのみのサイトでは機能しません)

  • gif、jpg、またはpng画像がキャッシュされると、更新することはできません。 唯一の回避策は、名前を変更した画像をサイトに再アップロードすることです。

  • Photon CDNにコピーするのに時間がかかりすぎる(10秒以上)画像は、名前を変更して再アップロードする必要があります

Photonを使用したくない場合は、チュートリアルのそのセクションをスキップしてください。

前提条件が揃ったので、WP Super Cacheのインストールを始めましょう!

WPスーパーキャッシュプラグインのインストールと構成

WP Super Cache Pluginをインストールする最初のステップは、wordpress.orgからホームディレクトリにダウンロードすることです。

cd ~; wget http://downloads.wordpress.org/plugin/wp-super-cache.1.4.zip

unzipパッケージがインストールされていない場合は、今すぐ実行します。

sudo apt-get install unzip

次に、WP Super CacheプラグインをWordPressプラグインディレクトリに解凍します(WordPressを別の場所にインストールした場合は、強調表示されたパスを独自のものに置き換えます)。

cd /wp-content/plugins
unzip ~/wp-super-cache.1.4.zip

次に、プラグインのグループ所有権を変更します。

sudo chgrp -R www-data wp-super-cache

そして、プラグインが `+ wp-content `ディレクトリと ` wp-config.php +`ファイルに書き込むことを許可します:

chmod g+w /wp-content
chmod g+w /wp-config.php

WordPressファイルが適切に設定されたので、プラグインを有効にしましょう。

WPスーパーキャッシュプラグインをアクティブにする

管理者ユーザーとしてWordPressサイトにログインし、ダッシュボード(http://example.com/wp-admin/)にアクセスします。 次の手順に従って、WP Super Cacheプラグインをアクティブにしてから、設定ウィンドウに移動します。

  1. Plugins(左のバー)をクリックします

  2. _WP Super Cache_のすぐ下にある_Activate_をクリックします

  3. WP Super Cache _Settings_をクリックします

キャッシュを有効にする

キャッシュを有効にし、いくつかの適切な設定でWPスーパーキャッシュを構成します。

  1. 詳細設定タブをクリックします

  2. クイックアクセスのためにこのウェブサイトへのキャッシュヒットを確認してください。

  3. [_mod_rewriteを使用してキャッシュファイルを提供する]を選択します。

これにより、アクセスされるファイルをキャッシュするようにWPスーパーキャッシュが構成され、_mod_rewrite_設定はキャッシュファイルを提供するためにNginxに任せます。 Apacheプラグインであるため、実際には_mod_rewrite_を使用しません。また、NginxをWebサーバーとして使用していますが、Nginxがキャッシュファイルを適切に提供するようにNginxサーバーブロック構成を更新する必要があります。 WP Super Cacheの設定をさらに調整した後、これに到達します(注:次の設定はオプションです)。

  1. 訪問者により迅速に配信されるようにページを圧縮します。

  2. 既知のユーザーのページをキャッシュしないでください。

  3. キャッシュの再構築を確認してください。

  4. Extraホームページチェックを確認します。

次に、_Update Status_ボタンをクリックして設定を保存する必要があります。これは、変更した設定の下にあるはずです。

image:https://assets.digitalocean.com/articles/wordpress_supercache/update_status.png [ステータス更新ボタン]

WP Super Cacheは、WordPressページをキャッシュするように設定されました。 キャッシュされたファイルを_serve_するようにNginxを設定する必要がありますが、WPスーパーキャッシュ設定ウィンドウで他のいくつかを見てみましょう。

Modの書き換えとガベージコレクションに関する警告

この時点で、WPスーパーキャッシュ構成ウィンドウの上部に警告バナーが表示されます。 Mod Rewriteルールには2つの警告があります(最初の警告があります)。

image:https://assets.digitalocean.com/articles/wordpress_supercache/mod_rewrite_warning.png [Mod Rewrite Warning]

Apacheの代わりにNginxを使用するため、これを無視してもかまいません。

次に、ガベージコレクションの設定に関する警告が表示されます。

image:https://assets.digitalocean.com/articles/wordpress_supercache/garbage_collection.png [ゴミ収集の警告]

この警告は、削除することで削除できます(つまり、 [閉じる]ボタンをクリックするか、ガベージコレクションを構成します。 ガベージコレクションを設定するには、[詳細設定]タブの[有効期限とガベージコレクション]セクションに移動し、好みに合わせて設定し、[有効期限の変更]ボタンをクリックします。

キャッシュの内容を表示する

WPスーパーキャッシュ設定の[コンテンツ]タブに移動すると、キャッシュされたすべてのページのリストを表示できます。 ここには、キャッシュされているファイルの数(およびキャッシュされているファイル)を示す「キャッシュ統計」が表示されます。 ここから現在のキャッシュを削除することもできます。

WPスーパーキャッシュは、ログインしていない、コメントを残していない、またはパスワードで保護された投稿を閲覧していないユーザーがアクセスしたページのみをキャッシュします。 そのため、アクセスしているページがキャッシュされない理由がわからない場合は、WordPressサイトをプライベートブラウジングモードで表示してみてください。 また、Nginxはキャッシュファイルを提供するようにまだ構成されていないため、アクセス時間の改善は見られません。

追加のWPスーパーキャッシュ構成

上記で説明した設定に加えて、有用または興味深いと思われる他の多くの設定があります。 [CDN]タブと[プリロード]タブについて簡単に説明します。

  • CDNの使用* – Jetpack Photonを使用する場合はスキップします

CDNを使用する場合は、[_ CDN_]タブでCDNサポートを有効にしてください。 静的アセットをオフロードするために必要な設定はすべてここにあります。

キャッシュのプリロード

[Preload]タブでは、ページを自動的にキャッシュするようにWPスーパーキャッシュを構成できます。 これは、指定した時間間隔でサイト全体または一定数の最近の投稿をプリロードするように構成できます。 ページのプリロードにはシステムリソース(ページを取得するためのCPU、および静的ページを格納するためのディスク領域)が必要になるため、有効にするかどうかを決定する際には考慮してください。

キャッシュファイルを提供するためのNginxの構成

WordPressサイトがWPスーパーキャッシュでページをキャッシュしているので、キャッシュされたファイルを提供するようにNginxを構成する必要があります。 Nginxサーバーブロック構成を編集します。

sudo vi /etc/nginx/sites-enabled/wordpress

前提条件のチュートリアルに従っている場合は、次の設定行を「+ server_name +」行のすぐ下に配置します。

   set $cache_uri $request_uri;

   # POST requests and urls with a query string should always go to PHP
   if ($request_method = POST) {
       set $cache_uri 'null cache';
   }
   if ($query_string != "") {
       set $cache_uri 'null cache';
   }

   # Don't cache uris containing the following segments
   if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
       set $cache_uri 'null cache';
   }

   # Don't use the cache for logged in users or recent commenters
   if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
       set $cache_uri 'null cache';
   }

   # Use cached or actual file if they exists, otherwise pass request to WordPress
   location / {
       try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php ;
   }

次に、「+ location〜\ .php $ {+ `」までの行を削除します。

Nginxを再起動して、構成の変更を有効にします。

sudo service nginx restart

これで、WordPressサイトのページがWPスーパーキャッシュ経由でキャッシュされます! Jetpack Photonを使用して画像もキャッシュする場合は、次のセクションに進みます。

Jetpack Photonをインストールして有効にする

Jetpackプラグインをホームディレクトリにダウンロードします。

cd ~; wget http://downloads.wordpress.org/plugin/jetpack.latest-stable.zip

次に、WordPressプラグインディレクトリでJetpackアーカイブを解凍します。

cd /wp-content/plugins
unzip ~/jetpack.latest-stable.zip
sudo chgrp -R www-data jetpack

Jetpackには、Photon以外のいくつかのモジュールが付属しており、それらの多くはデフォルトで有効になっています。 Jetpackに加えて他のJetpackモジュールを使用する場合は、次の編集をスキップし、WordPress管理者ダッシュボードのJetpackプラグイン設定でPhotonモジュールをアクティブ化します。 それ以外の場合は、プラグインのPHPファイルに数行のコードを追加して、他のモジュールを無効にすることができます。

編集のために `+ wp-config.php +`を開きます:

vi /wp-config.php

ファイルの最後に移動して、次のコード行を追加します。

function change_default_modules() {
   return array( 'photon' );  // activate these modules by default
}
add_filter( 'jetpack_get_default_modules', 'change_default_modules' );

function activate_specific_jetpack_modules( $modules ) {
       $active_modules = array( 'photon' );  // enable these modules
       $modules = array_intersect_key( $modules, array_flip( $active_modules ) );  // deactivate other modules
       return $modules;
}
add_filter( 'jetpack_get_available_modules', 'activate_specific_jetpack_modules' );

保存して終了します。 Jetpackプラグインをアクティブにすると、Photonモジュールのみがロードされ、他のすべてのJetpackモジュールの使用が無効になります。

Jetpackプラグインを有効にする

次に、管理者ユーザーとしてWordPressサイトにログインし、ダッシュボード(http://example.com/wp-admin/)にアクセスします。 次の手順に従って、Jetpackプラグインをアクティブにし、その設定に入ります。

  1. Plugins(左のバー)をクリックします

  2. _Jetpack_のすぐ下にある_Activate_をクリックします

  3. [プラグイン]ウィンドウの上部近くにある緑色のバナーの[WordPress.comに接続]をクリックします

  4. WordPress.comのログイン情報を入力して、[_ Jetpackの承認_]をクリックします

image:https://assets.digitalocean.com/articles/wordpress_supercache/authorize_jetpack.png [Jetpackの認証]

これで、WordPressサイト上のすべての画像(.png、.jpg、.gif)がJetpackのPhoton CDNから提供されます。 サーバーが影響を受けるいくつかの方法を次に示します。

  • 帯域幅の消費が少ない:WordPress.comが提供するPhoton CDNがサイトの画像を提供するため、サーバーの送信帯域幅が少なくなります

  • 少ないリソース消費:ユーザーに画像を提供しなくなり、ほとんどが静的ページのみになるため、CPUとメモリの消費が少なくなります

  • より多くのユーザー容量:リクエストごとに使用するリソースが少ないため、より多くの同時ユーザーを処理できます。

それでおしまい! Photon CDNは、リクエストされた画像をキャッシュして提供します。 Photopackプラグインの設定でPhotonを使用しない場合は、Photonをいつでも無効にできることに注意してください。

性能比較

このセットアップの潜在的なパフォーマンスの利点のアイデアを示すために、2つの1 CPU / 1GB RAM VPS(1つはWPスーパーキャッシュなし、1つはそれ)をセットアップし、Apache JMeterを使用してそれらに対して負荷テストを実行しました(複数のユーザーループで10秒以上5つのWordPressページにアクセスする)。

キャッシュされていないサーバーは、CPU使用率によるパフォーマンスの問題を示す前に、1秒あたり約3人のシミュレートされたユーザーを処理できました。

WP Super Cacheがインストールされたキャッシュサーバーは、パフォーマンスの低下を示すことなく、1秒あたり50人以上のシミュレーションユーザー(1日あたり数百万人)に対応できました。

Apache JMeterを使用して独自の負荷テストを実行する方法に関するチュートリアルは、https://www.digitalocean.com/community/tutorials/how-to-use-apache-jmeter-to-perform-load-testing-から入手できます。 on-a-web-server [Apache JMeterを使用してWebサーバーで負荷テストを実行する方法]

結論

WP Super CacheとJetpack Photonがインストールされたので、以前よりも多くのユーザーにサービスを提供できるはずです。 ニーズに最適な構成ができるまで、WPスーパーキャッシュの設定を試してみてください。

質問やあなた自身のパフォーマンス比較を投稿してください!