パフォーマンス要因
いくつかの要因があなたのWordPressブログ(またはウェブサイト)のパフォーマンスに影響を与える可能性があります。これらの要因には、ホスティング環境、WordPressの設定、ソフトウェアのバージョン、画像の数とそのファイルサイズが含まれますが、これに限りません。
これらのパフォーマンスを低下させる要因のほとんどは、この記事で取り上げられています。
ホスティング
利用可能な最適化技術は、ホスティングの設定に依存します。
共有ホスティング
これは最も一般的なホスティングのタイプです。あなたのサイトは他の多くのサイトと一緒にサーバー上にホストされます。ホスティング会社がウェブサーバーを管理するため、サーバー設定などに対する制御はほとんどありません。ほとんどの共有ホスティングでは、ユーザーはSFTPを介してウェブサイトのルートのファイルシステムにアクセスでき、一般的なドメイン/ホスティングタスクの多くはウェブホスティングコントロールパネルを介して行えます。
このタイプのホスティングに最も関連する領域は、キャッシング、WordPressパフォーマンス、およびコンテンツオフロードです。
マネージドホスティング
マネージドホスティングは共有ホスティングに似ていますが、特定の使用シナリオのためにユーザーが実行できるソフトウェアスタックのセットにより制限されています。したがって、ホスティングプロバイダーはユーザーのためにソフトウェアスタックを管理しますが、ソフトウェアの選択を制限する条件があります。ユーザーは通常、ファイルシステムにアクセスしたり、ウェブホスティングコントロールパネルを介してタスクを管理する必要はありません。一部のホスティングプロバイダーは、ホスティングプランの上位層でソフトウェアやプラグインの選択肢を増やすことを提供します。
今日のウェブ上のほとんどのコンテンツプラットフォーム(例:ブログ/ソーシャルメディア)は、特定の使用シナリオのためのプラットフォームを提供することを目的としたマネージドホスティングの一形態です。
仮想プライベートサーバーと専用サーバー
このホスティングシナリオでは、自分のサーバーを制御できます:ファイルシステム全体、SSH、およびサーバー専用の独立したオペレーティングシステムに任意のソフトウェアをインストール/構成する能力があります。サーバーは専用のハードウェアであるか、同じ物理ハードウェアを共有する多くの仮想サーバーの1つである可能性があります。
重要な点は、サーバー設定を制御できることです。上記の領域(キャッシングとWordPressパフォーマンス)に加えて、ここでの主な関心領域は、ソフトウェアの最適化とコンテンツオフロードです。
サーバーの数
非常に高いトラフィック状況に対処する場合、複数のサーバーを使用する必要があるかもしれません。このレベルに達している場合は、上記のすべての適用可能な技術をすでに使用しているはずです。
WordPressデータベースは簡単に別のサーバーに移動でき、設定ファイルに小さな変更を加えるだけで済みます。同様に、画像やその他の静的ファイルも別のサーバーに移動できます(コンテンツオフロードを参照)。
ロードバランサーは、複数のウェブサーバーにトラフィックを分散させるのに役立ちますが、より高いレベルの専門知識が必要です。複数のデータベースサーバーを使用している場合、HyperDBクラスは標準のWPDBクラスのドロップイン置き換えを提供し、複製および分割構造の両方で複数のデータベースサーバーを処理できます。
ハードウェアパフォーマンス
ハードウェアの能力は、サイトのパフォーマンスに大きな影響を与えます。プロセッサの数、プロセッサの速度、利用可能なメモリの量、ディスクスペース、およびディスクストレージメディアは重要な要因です。ホスティングプロバイダーは一般的に、高い価格でより高いパフォーマンスを提供します。
地理的距離
サーバーとウェブサイトの訪問者との距離もパフォーマンスに影響を与えます。コンテンツ配信ネットワーク(CDN)は、静的ファイル(画像など)をさまざまな地理的地域にミラーリングし、すべてのサイト訪問者が最適なパフォーマンスを得られるようにします。
サーバーロード
サーバーのトラフィック量と、その負荷を処理するための設定が大きな影響を与えます。たとえば、キャッシングソリューションを使用しない場合、追加のページリクエストが来てスタックされると、パフォーマンスが停止し、ウェブサーバーやデータベースサーバーがクラッシュすることがよくあります。
適切に設定されていれば、ほとんどのホスティングソリューションは非常に高いトラフィック量を処理できます。他のサーバーにトラフィックをオフロードすることもサーバーロードを軽減できます。
ログインブルートフォース攻撃、画像のホットリンク(他のサイトが高トラフィックページからあなたの画像ファイルにリンクすること)やDoS攻撃などの悪質なトラフィックもサーバーロードを増加させる可能性があります。これらの攻撃を特定し、ブロックすることが重要です。
ソフトウェアバージョンとパフォーマンス
最新のソフトウェアを使用していることを確認することも重要です。ソフトウェアのアップグレードは、バグを修正し、パフォーマンスを向上させることがよくあります。Linux(またはWindows)、Apache、MySQL/MariaDB、およびPHPの最新バージョンを実行していることが不可欠です。
WordPressの設定
テーマはサイトのパフォーマンスに大きな影響を与えます。軽量で高速なテーマは、重いグラフィックが多く非効率的なテーマよりもはるかに効率的に動作します。
プラグインの数とそのパフォーマンスも、サイトのパフォーマンスに大きな影響を与えます。不要なプラグインを無効にし、削除することは、パフォーマンスを向上させる重要な方法です。
WordPressのアップグレードを維持することも重要です。
グラフィックのサイズ
投稿内の画像がウェブ用に最適化されていることを確認することで、時間と帯域幅を節約し、検索エンジンランキングを向上させることができます。
パフォーマンステストツール
- オンラインウェブページベンチマークツールは、異なる場所、ブラウザ、および接続速度から実際のウェブサイトパフォーマンスをテストできます。
- 内蔵のブラウザ開発者ツール(例:FirefoxやChrome)には、すべてパフォーマンス測定ツールがあります。
WordPressのパフォーマンスを向上させる方法
あなたのWordPressウェブサイトの最適化
プラグインの最小化
WordPressのパフォーマンスを向上させる最初で最も簡単な方法は、プラグインを見直すことです。不要なプラグインを無効にし、削除してください。サーバーのパフォーマンスを測定するために、プラグインを選択的に無効にしてみてください。
あなたのプラグインの1つが、サイトのパフォーマンスに大きな影響を与えていますか?プラグインのドキュメントを確認し、適切なプラグインサポートフォーラムでサポートを求めるか、同様の機能セットを持つ代替プラグインを探してください。
コンテンツの最適化
画像ファイル
- 不要な画像はありますか?(例:いくつかの画像をテキストに置き換えられますか?)
- すべての画像ファイルが最適化されていることを確認してください。各画像に対して正しいフォーマット(JPG/PNG/GIF)と圧縮を選択してください。
- より小さいサイズのWebPのような最新の画像フォーマットの使用を検討してください。
ファイルの総数/サイズ
- サイトの平均ページを表示するために必要なファイルの数を減らせますか?
- まだHTTP/1.xを使用している場合は、複数のファイルを1つの最適化されたファイルに結合することをお勧めします。
- CSSおよびJavaScriptファイルをミニファイしてください。
ハードウェアのアップグレード
ホスティングプロバイダーでの高いサービスレベルに対して多く支払うことは非常に効果的です。CPUとメモリ(RAM)を増やすか、ソリッドステートドライブ(SSD)またはNVMeを持つホストに切り替えることで、大きな違いを生むことができます。プロセッサの数とプロセッサの速度を増やすことも役立ちます。可能な場合は、異なる機能を持つサービスを分離し、HTTPとMySQLのように複数のサーバーまたはVPSで実行してください(サーバーは理想的には同じ場所にあり、レイテンシを減らすべきです)。共有ホスティングを利用している場合は、ディスクI/O、IOPS、NPROC、およびホスティングプランの総プロセスのようなリソース制限が高いプランにアップグレードすることで、制限を最大限に活用できるかもしれません。
ソフトウェアの最適化
最新のオペレーティングシステムバージョン(例:LinuxまたはWindows Server)、最新のウェブサーバーバージョン(例:ApacheまたはIIS)、データベース(例:MySQLサーバー)、およびPHPを実行していることを確認してください。
以下のタスクを実行できない場合、ホスティングプロバイダーがいくつかのタスクを実行できるか、フリーランサーなどの外部の助けを求めることができます。良いホスティングプロバイダーは、推奨される仕様に合わせてアカウントをアップグレードまたはアップグレードされたサーバーに移動しますが、すべてのプロバイダーがサーバーの管理/最適化を手伝うわけではありません。通常、これはホスティングプランの提供範囲外です。必要に応じて、事前に選択されたソフトウェアスタックと固定バージョンを持つマネージドWordPressホスティングソリューションが、あなたのニーズに合う可能性があります。
DNS:WordPressサーバーでDNSを実行しないでください。商業DNSサービスまたはドメインレジストラの無料提供を使用してください。外部サービスを使用すると、メンテナンスや緊急時にバックアップサーバー間の切り替えがはるかに簡単になります。また、ある程度のフォールトトレランスを提供します。外部サーバーでDNSをホストすると、プライマリウェブサーバーの負荷が軽減されます。これは簡単な変更ですが、トラフィックとCPU負荷を軽減します。
ウェブサーバー:ウェブサーバーはパフォーマンスを向上させるように設定できます。ウェブサーバーキャッシングから、訪問者ごとの負荷を減らすためのキャッシュヘッダーの設定まで、さまざまな技術があります。特定のウェブサーバーの最適化を検索してください(たとえば、「Apache最適化」を検索して詳細を確認してください)。一部のウェブサーバーには、支払うことでより高速なバージョンがあります。また、特定のホスティングおよびサイト構成に基づいて、Apacheのパフォーマンスを向上させるためのさまざまな方法があります(例:Memcached)。
PHP:さまざまなPHPアクセラレーターが利用可能で、PHPファイルのパフォーマンスを劇的に向上させることができます。これはすべてのPHPファイルに適用され、WordPressインストールに限定されません。PHP最適化に関する情報を検索してください(例:APCまたはOPcache)。一部のWordPressキャッシングプラグインは、Memcached、APC、および他のOpcodeキャッシングの統合サポートを提供します。新しいPHPバージョンは通常、より良いパフォーマンス最適化を含みます。
MySQL/MariaDB:MySQLまたはMariaDBの最適化は、独自の黒いアートです。クエリキャッシュ設定にいくつかの簡単な変更を加えることで、WordPressのパフォーマンスに劇的な影響を与えることができます。なぜなら、WordPressはすべてのリクエストで多くのクエリを繰り返すからです。現在、MySQLのデフォルトストレージエンジンはInnoDBであるため、それを使用することを確認する必要があります。InnoDBは最適化および微調整が可能です。詳細情報や例については、mysql最適化、mysql innodbパフォーマンス、またはinnodb最適化を検索してください。古いMyISAMテーブルをInnoDBに変換する方法については、mysql convert myisam to innodbを検索してください。
その他のサービス:WordPressサーバーでメールサーバーを実行しないでください。お問い合わせフォームには、外部のメールサービスとともにお問い合わせフォームプラグインを使用してください。
キャッシング
キャッシングプラグイン
キャッシングプラグインは簡単にインストールでき、WordPressの投稿やページを静的ファイルとしてキャッシュします。これらの静的ファイルはユーザーに提供され、サーバーの処理負荷を軽減します。これにより、比較的静的なページのパフォーマンスが数百倍向上する可能性があります。プラグインディレクトリでキャッシュを検索することで、関連するプラグインのリストを取得できます。
Varnishのようなシステムレベルのページキャッシュと組み合わせると、これは強力です。投稿/ページに多くの動的コンテンツがある場合、キャッシングの設定はより複雑になる可能性があります。
サーバーサイドキャッシング
ウェブサーバーキャッシングはより複雑ですが、非常に高いトラフィックサイトで使用されます。この記事の範囲を超えたさまざまなオプションが利用可能です。最も簡単なソリューションは、サーバーがローカルでキャッシュを開始することですが、より複雑で関与するシステムは、WordPressアプリケーションが現在実行されているウェブサーバーの「前」に複数のキャッシングサーバー(リバースプロキシサーバーとも呼ばれます)を使用する場合があります。一部のウェブサーバーは、同時にリバースプロキシとしても機能できます。Alternative PHP Cache(APC)のようなオペコードキャッシュをサーバーに追加すると、PHPのパフォーマンスが大幅に向上します。
Varnish Cacheは、一部のキャッシュプラグインと連携して、事前に構築されたページをメモリに保存し、Apache、PHP、およびWordPressスタックを実行することなく迅速に提供します。
内部で説明されているように、ネイティブのWordPressコメントの代わりに外部コメントプラグインを使用することで、読者がWordPressにログインする必要がなくなり、Varnishがキャッシュから提供できるページビューの数が増加します。
ブラウザキャッシング
ブラウザキャッシングは、ページごとのリクエスト数を減らすことでサーバーロードを軽減するのに役立ちます。たとえば、変更されないファイル(画像、CSS、JavaScriptなどの静的ファイル)に正しいファイルヘッダーを設定することで、ブラウザはこれらのファイルをユーザーのコンピュータにキャッシュします。この技術により、ブラウザはファイルが変更されたかどうかを確認でき、単にリクエストするのではなくなります。その結果、ウェブサーバーは、ファイルが変更されていないことを確認する304レスポンスを多く返すことができ、ファイルを送信する必要がある200レスポンスを減らすことができます。
HTTP Cache-Control(特にmax-age
)およびExpiresヘッダー、ならびにエンティティタグについて調査してください。
一部のWordPressキャッシュプラグインは、ブラウザキャッシングとETagのサポートを統合しています。
オブジェクトキャッシング
永続的オブジェクトキャッシュを使用すると、ウェブサーバーからデータベースへの移動を減らすことでページの読み込み時間を短縮できます。たとえば、サイトのオプションデータは、各ページビューのために利用可能である必要があります。永続的オブジェクトキャッシュがない場合、ウェブサーバーは各ページビューを処理するためにデータベースからこれらのオプションを読み取る必要があります。データベースへの追加の移動は、ウェブサーバーの応答時間(「最初のバイトまでの時間」TTFBなど)を遅くし、トラフィックの急増時にデータベースサーバーをすぐに圧倒する可能性があります。
サイトが永続的オブジェクトキャッシングを使用するには、ホスティングプロバイダーが特定のタイプのサーバー、キャッシュサーバーを提供する必要があります。ホスティングプロバイダーやフリーランサーなどの外部の助けを求めて、永続的オブジェクトキャッシュサーバーをインストールおよび構成する手助けを依頼し、その後、インストールされたキャッシュサーバーをサポートするオブジェクトキャッシュWPプラグインをインストールしてください:
さらなる読み物
コンテンツオフロード
コンテンツ配信ネットワーク(CDN)の使用
CDNを使用すると、ウェブサイトの負荷を大幅に軽減できます。画像、JavaScript、CSS、およびテーマファイルの検索と配信をCDNにオフロードすることで、より迅速で、WordPressサーバーのアプリスタックの負荷を大幅に軽減できます。CDNは、上記のキャッシングプラグインと組み合わせて使用すると最も効果的です。一部の新しいCDNは、ウェブサイトのHTMLコンテンツ全体をキャッシュするフルページキャッシング(FPC)やエッジキャッシングも含まれています。
詳細については、著名なコンテンツ配信サービスプロバイダーのリストを参照してください。
静的コンテンツ
静的ファイルは別のサーバーにオフロードできます。たとえば、静的な画像、JavaScript、またはCSSファイルは別のサーバーに移動できます。これは非常に高性能なシステム(Google、Flickr、YouTubeなど)で一般的な技術ですが、単一のサーバーが苦労している小規模なサイトにも役立ちます。また、異なるホスト名にこのコンテンツを移動することで、将来的に複数のサーバーの基盤を築くことができます。
一部のウェブサーバーは静的ファイルを提供するように最適化されており、Apacheのようなより複雑なウェブサーバーよりもはるかに効率的に提供できます(例:lighttpd)。
クラウドストレージは、使用量に応じて支払う静的ファイルホスティングサービスです。最低コストがないため、共有または単一のサーバーが処理できるピークに達している低トラフィックサイトには実用的かもしれません。
複数のホスト名
静的ファイルを複数のホスト名に分割することで、ユーザーの改善が得られる場合があります。ほとんどのブラウザは、ホストに対して同時に2つのリクエストしか行わないため、ページが16ファイルを必要とする場合、2つずつリクエストされます。16ファイルを4つのホスト名に分散させると、8つずつリクエストされます。これにより、ユーザーのページ読み込み時間が短縮される可能性がありますが、異なるホスト名が同じサーバーによって提供されている場合、同時リクエストが増えることでサーバーロードが増加する可能性があります。また、「パイプライニング」として知られる技術は、過剰に使用されると訪問者のインターネット接続を飽和させることがあります。
画像のオフロードは、最も簡単でシンプルな出発点です。すべての画像ファイルを3つのホスト名(例:assets1.example.com
、assets2.example.com
、assets3.example.com
)に均等に分割できます。トラフィックが増加するにつれて、これらのホスト名を専用サーバーに移動できます。注意:ランダムにホスト名を選択することは避けてください。これはブラウザキャッシングに影響を与え、トラフィックが増加し、過剰なDNSルックアップを引き起こす可能性があり、パフォーマンスペナルティを伴うことがあります。
同様に、静的なJavaScriptおよびCSSファイルも別のホスト名またはサーバーにオフロードできます。
HTTP/2およびHTTP/3では、「HTTPパイプライニング」はマルチプレクシングに置き換えられるため、上記の技術の使用はもはや必要ないかもしれません。
フィード
フィードは、すべてのフィードトラフィックを処理できる外部フィードサービスにオフロードできます。これにより、数分ごとにサイトからフィードを更新することができます。これは大きなトラフィックの節約になります。
同様に、自分のフィードを別のサーバー(例:feeds.example.com)にオフロードし、フィードの統計/広告を自分で処理することもできます。
圧縮
サーバー上のファイルやデータを圧縮する方法はいくつかあり、ページが読者のブラウザに迅速に配信されるようにします。一部のキャッシュプラグインは、上記で説明したほとんどの一般的な圧縮アプローチをサポートしています。
一部のWPキャッシュプラグインは、スタイルシートやJavaScriptファイルを圧縮および結合するためにMinifyおよびTidyをサポートしています。また、zlibなどの出力圧縮もサポートしています。出力圧縮についてはOutput Compressionも参照してください。
データベースの調整
データベースのクリーンアップ
一部の最適化プラグインやデータベースプラグインは、データベース内の余分なク clutterを減らすのに役立ちます。
WordPressに、投稿やページのリビジョンの数を最小限に抑えるように指示することもできます。
サーバーの追加
追加の専門知識が必要ですが、サーバーを追加することはパフォーマンスを向上させる強力な方法です。
ロードバランサーを使用して、複数のウェブサーバーにトラフィックを分散させることができ、HyperDBやクラウドのデータベースサービスを使用して、よりスケーラブルまたは複数のデータベースサーバーを実行できます。
クラウドサービスでのWordPressサイトのスケーリングに関するさまざまなガイドやWordCampのプレゼンテーションがあります。
自動読み込みオプション
自動読み込みオプションは、WordPressの各ページ読み込み時に自動的に読み込まれるプラグインやテーマの設定です。各プラグインやテーマは、自分のオプションとどのオプションが自動読み込みされるかを定義します。自動読み込みオプションが多すぎると、サイトが遅くなる可能性があります。一般的に、サイトの自動読み込みオプションを800kb未満に保つように努めるべきです。
デフォルトでは、自動読み込みオプションはwp_optionsテーブルに保存されます。このテーブル内でオプションごとに自動読み込みをオフにすることができます。自動読み込みオプションの表示と変更に関する手順については、ホスティングプロバイダーに確認してください。
永続的オブジェクトキャッシュを使用している場合、オプション(自動読み込みされるかどうかにかかわらず)は、より迅速かつ効率的に読み込まれます。
追加リソース
さらなる読み物
WordCampパフォーマンスプレゼンテーション
- WordCamp 2012(サンフランシスコ)のIliya Polihronovによる高パフォーマンスWordPress
- WordCampイスラエル2013のWordPress最適化
- WordCamp 2007(サンフランシスコ)のHyperDBと高パフォーマンスに関するスライドのコピー
- WordCampボローニャ(イタリア)2013の高トラフィックサイトのためのウェブパフォーマンス最適化に関する50のヒント