序章

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

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

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

前提条件

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

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

WPスーパーキャッシュは、クエリ引数をNginxに渡すと機能しないため、クエリ引数を使用するプラグインでは機能しません。 また、このため、WordPressのデフォルトのパーマリンク設定(WordPressのページ番号を引数として使用)を使用しないでください

Jetpackフォトンの制限:

  • Jetpackを有効にするには、サイトを WordPress.com に接続する必要があります。これには、無料のWordPress.comアカウントが必要です。
  • WordPressサイトはポート80でリッスンする必要があります(PhotonはHTTPSのみのサイトでは機能しません)
  • gif、jpg、またはpng画像がキャッシュされると、更新できなくなります。 唯一の回避策は、名前を変更した画像をサイトに再アップロードすることです。
  • Photon CDNにコピーするのに時間がかかりすぎる(10秒以上)画像は、名前を変更して再アップロードする必要があります

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

前提条件が整ったので、WPスーパーキャッシュのインストールを開始しましょう。

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

WPスーパーキャッシュプラグインをインストールする最初のステップは、wordpress.orgからホームディレクトリにプラグインをダウンロードすることです。

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

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

sudo apt-get install unzip

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

cd /var/www/html/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 /var/www/html/wp-content
chmod g+w /var/www/html/wp-config.php

WordPressファイルが正しく設定されたので、プラグインをアクティブ化しましょう。

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

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

  1. プラグイン(左バー)をクリックします
  2. WPスーパーキャッシュのすぐ下にあるアクティブ化をクリックします
  3. WPスーパーキャッシュ設定をクリックします

キャッシュを有効にする

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

  1. [詳細設定]タブをクリックします
  2. すばやくアクセスするには、このWebサイトへのキャッシュヒットを確認してください。
  3. [mod_rewriteを使用してキャッシュファイルを提供する]を選択します。

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

  1. ページを圧縮して、訪問者により早く配信されるようにします。
  2. 既知のユーザーのページをキャッシュしないをチェックします。
  3. キャッシュの再構築を確認してください。
  4. 追加のホームページチェックをチェックしてください。

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

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

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

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

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

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

この警告は、それを閉じることによって取り除くことができます(すなわち 「閉じる」ボタンをクリックするか、ガベージコレクションを設定します。 ガベージコレクションを設定するには、 有効期限とガベージコレクション [詳細設定]タブのセクションを選択し、好みに合わせて構成して、[ 有効期限の変更ボタン。

キャッシュの内容の表示

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

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

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

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

CDNの使用–JetpackPhotonを使用する場合はスキップします

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

キャッシュのプリロード

プリロードタブでは、ページを自動的にキャッシュするように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を使用して画像もキャッシュする場合は、次のセクションに進みます。

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

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

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

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

cd /var/www/html/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 /var/www/html/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. プラグイン(左バー)をクリックします
  2. Jetpackのすぐ下にあるActivateをクリックします
  3. プラグインウィンドウの上部にある緑色のバナーで、[WordPress.comに接続]をクリックします
  4. WordPress.com ログインを入力し、ジェットパックの承認をクリックします

これで、WordPressサイトのすべての画像(.png、.jpg、.gif)がJetpackのPhotonCDNから提供されます。 サーバーが影響を受けるいくつかの方法は次のとおりです。

  • より少ない帯域幅消費 WordPress.comによって提供されるPhotonCDNがサイトの画像を提供するため、サーバーはより少ない発信帯域幅を使用します
  • リソース消費量の削減:ユーザーに画像を提供しなくなり、ほとんどの場合静的ページのみを提供するため、CPUとメモリの消費量が少なくなります
  • より多くのユーザー容量:リクエストあたりのリソース使用量が少ないため、より多くの同時ユーザーを処理できるようになります

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

パフォーマンスの比較

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

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

WPスーパーキャッシュがインストールされたキャッシュサーバーは、パフォーマンスの低下を示すことなく、毎秒50を超えるシミュレートされたユーザー( 1日あたり数百万)にサービスを提供できました。実際、要求されたページにより、要求がより迅速に返されました。キャッシュされました!

Apache JMeterを使用して独自の負荷テストを実行する方法のチュートリアルは、次の場所にあります。ApacheJMeterを使用してWebサーバーで負荷テストを実行する方法

結論

WP SuperCacheとJetpackPhotonがインストールされたので、以前よりもはるかに多くのユーザーにサービスを提供できるようになります。 ニーズに最適な構成が得られるまで、WPスーパーキャッシュの設定を試してみることをお勧めします。

質問や独自のパフォーマンス比較を投稿してください。