この時点で、WordPressのパフォーマンス最適化に関する数え切れないほどの記事を目にしたことだろう。何の進歩もないまま、同じような効果的でない推奨事項につまずき続けるのはイライラするものです。
もしあなたが圧倒され、選択肢がないと感じているのであれば、以下のステップが解決の糸口となるでしょう。これらは、当社がホスティングするすべてのサイトにデフォルトで実装されている戦略と同じであり、パフォーマンス最適化への包括的なアプローチを網羅しています。当社のインフラストラクチャの詳細について説明しますが、これらの原則は事実上どのようなホスティング環境にも適合させることができます。
私たちが守りがちなルールのひとつは、物事は最初から最適化する必要はないということです。例えば、Google Fontsの場合、パフォーマンスを向上させるために多くの作業が必要なのであれば、そもそも本当に必要なのかどうかを検討すべきかもしれない。
この精神に則り、まずはWordPressの本領を発揮するいくつかの機能を無効にすることから始めよう。
0.WordPressリセット:
1.WP Cronを無効にする。
WordPressは、Linuxサーバーにあるような適切なcronを備えていません。代わりに、ウェブサーバーにアクセスがあるたびにトリガーされる関数を使用しています。
より良い方法は、外部サービスを利用してWordPressのcronを起動することです。レイビームでは クーロンジョブ サービスでは、5分ごとにジョブを実行する。cronによって起動されたプロセスが終了するまでに時間がかかることがあるので、適度な間隔を空ける必要があります。
WP Cronを無効にするには、以下の定数を wp-config.php file:
define( 'DISABLE_WP_CRON', true );
外部クーロンが本当に実行されているかどうかをチェックすることは重要であり、そのための良いプラグインは以下である。 クーロン・ロガー.
2.リビジョン投稿の無効化または制限
Post Revisionsは、WordPress上のすべての投稿に加えた変更を保存するもので、データベースに蓄積される可能性があります。の以下の定数を使用して、快適に作業できる値に設定するか、無効にしてください。 wp-config.php file:
define( 'WP_POST_REVISIONS', '0' );
でリビジョンを無制限に設定することもできます。 “「-1」” そして、プラグインの助けを借りて、設定した時間が経過したら自動的に削除されるように設定する。
3.トラックバックとピンバックを無効にする
ピンバックは煩わしく、インストールに不必要な混乱を引き起こします。ダッシュボードのディスカッション設定で無効にすることができます。 functions.php ファイルまたはカスタムミュープラグインを使用して、セルフ・ピンバックを無効にしてください:
function wpsites_disable_self_pingbacks( &$links ) { { $linksを削除します。
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, get_option( 'home' ) ))
unset($links[$l]);
}
add_action( 'pre_ping', 'wpsites_disable_self_pingbacks' );
4.キャピタルPを無効にする
WordPressには不思議なフィルターがある。 ワードプレス 大文字の「P」を付けずに、このように:WordPress
以下の機能で取り除くことができる:
remove_filter( 'the_content', 'capital_P_dangit', 11 );
remove_filter( 'the_title', 'capital_P_dangit', 11 );
remove_filter( 'wp_title', 'capital_P_dangit', 11 );
remove_filter( 'comment_text', 'capital_P_dangit', 31 );
remove_filter( 'widget_text_content', 'capital_P_dangit', 11 );
と書くだけで、関数を置き換えることができる。 ワードプレス を正しく理解している。
5.XML-RPCを無効にする
XML-RPCはWordPressではほとんど使われなくなった機能で、サイトのパフォーマンスを向上させ、さらに重要なこととして、ブルートフォース攻撃の潜在的な攻撃ベクトルとなる可能性があるため、無効にすることがよく推奨されます。モバイルアプリやリモートパブリッシングなど、提供される機能が特に必要でない限り、安全に無効化できます。
これを無効にする方法はいくつかあり、Apache、Nginx、またはPHPを使用する。最も簡単な方法は ジェフ・スター(ペリシャブル・プレス:
add_filter('xmlrpc_enabled', '__return_false');
この記事では、XML-RPCが実際にどのようにロードされるのか、またそれを無効にする方法についても詳しく説明されている。 読む.また、X-Pingbacksを無効にすることをお勧めします:
// X-Pingbackヘッダを無効にする
function shapeSpace_disable_x_pingback($headers) { // X-Pingbackヘッダを無効にする。
unset ($headers['X-Pingback']);
return $headers;
}
add_filter('wp_headers', 'shapeSpace_disable_x_pingback');
6.ダッシュアイコンを無効にする
ダッシュコンはWordPressダッシュボードで使用されるアイコンフォントで、使用されていないときでもフロントエンドに読み込まれます。以下の方法で無効にしてください:
// ダッシュアイコンを削除する
関数 wpdocs_dequeue_dashicon() { // ダッシュコンを削除する
if (current_user_can( 'update_core' )){
を返します;
}
wp_deregister_style('dashicons');
}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_dashicon' );
7.絵文字を無効にする
絵文字がページ・サイズに与える負荷はごくわずかだが、私たちは原則的に絵文字を削除することにしている。
/**
* Disable the emoji's
*/
function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );
/**
* Filter function used to remove the tinymce emoji plugin.
*
* @param array $plugins
* @return array Difference betwen the two arrays
*/
function disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
/**
* Remove emoji CDN hostname from DNS prefetching hints.
*
* @param array $urls URLs to print for resource hints.
* @param string $relation_type The relation type the URLs are printed for.
* @return array Difference betwen the two arrays.
*/
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
if ( 'dns-prefetch' == $relation_type ) {
/** This filter is documented in wp-includes/formatting.php */
$emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );
$urls = array_diff( $urls, array( $emoji_svg_url ) );
}
return $urls;
}
8.埋め込みを無効にする
自動エンベッドは便利ですが、よりパフォーマンスの高い代替手段がいくつかあります。以下の方法で削除してください:
function disable_embeds_code_init() {
// Remove the REST API endpoint.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' );
// Don't filter oEmbed results.
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
// Remove oEmbed discovery links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
// Remove all embeds rewrite rules.
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
// Remove filter of the oEmbed result before any HTTP requests are made.
remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}
add_action( 'init', 'disable_embeds_code_init', 9999 );
function disable_embeds_tiny_mce_plugin($plugins) {
return array_diff($plugins, array('wpembed'));
}
function disable_embeds_rewrites($rules) {
foreach($rules as $rule => $rewrite) {
if(false !== strpos($rewrite, 'embed=true')) {
unset($rules[$rule]);
}
}
return $rules;
}
9.ハートビートの制御
heartbeatは、投稿の自動保存や編集のロックなど、WordPressに重要な機能を提供しています。5分、つまり300秒に制限することで、この機能を無効にするのと同様の効果が期待できます:
関数 wb_set_heartbeat_time_interval($settings) { { $settings[ interval]=300; $settings[ interval]=300
$settings['interval']=300;
return $settings;
}
add_filter('heartbeat_settings', 'wb_set_heartbeat_time_interval');
この定数でオートセーブにも同じ間隔を適用する:
define( 'AUTOSAVE_INTERVAL', 300 );
10.よりクリーンなヘッダーで再起動
WordPressは長年にわたり、あらゆる新技術を取り入れようと多くのものを蓄積してきた。しかし、それらは今でもすべてのページ、最も重要な場所にロードされている。
これは完全かつ安全なリストである。
// rsdリンクを削除する。
remove_action( 'wp_head', 'rsd_link' );
// WordPressジェネレータタグを削除する。
remove_action( 'wp_head', 'wp_generator' );
// RSSフィードリンクを削除する。
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Windows Live Writerマニフェストファイルへのリンクを削除します。
remove_action( 'wp_head', 'wlwmanifest_link' );
// 隣接する投稿リンクを削除します。
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
// WordPressのショートリンクを削除します。
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
0.5: ワードプレスの改善
1.プラグインを恐れない
レイビームでは、プラグインを恐れることはありません。プラグインは、他のCMSプラットフォームに比べ、WordPressに高度な機能を追加する最も簡単な方法です。プラグインの数が問題なのではなく、その質が問題なのです。
プラグインは集中すべきであり、1つのことだけを行い、それを非常にうまく行うことが理想的である。何でもできることを約束する「オールインワン」プラグインは、多くの場合不足し、インストールを乱雑にしてしまうので避けましょう。
パフォーマンスに関しては、WordPressの速度の問題をすべて即座に解決できる魔法のプラグインはありません。代わりに、フロントエンドと管理ダッシュボードの両方で、速度低下の一般的な原因を理解し、それらに個別に対処する必要があります。幸い、よくある原因をいくつか特定しました。
2.2.プラグインに何らかの方法を教え、オートロードオプションが満たされないようにする。
これはおそらく、ダッシュボードのパフォーマンスを低下させる一番の理由だろう。プラグインには設定があり、高速に読み込むことを好むため、'wp_options'テーブルをデータで満たし、すべてのページで読み込むように設定します。問題のプラグインが無効化/削除されてもデータが残っていると、さらに悪化する可能性があります。
プラグイン アドバンスデータベースクリーナー データベースで何が起きているのかを俯瞰し、それを修正するためのツールを提供してくれる。 オプション タブには、各プラグインのデータと、デフォルトで自動ロードされるかどうかの情報があります。 一般清掃 をより細かくコントロールできる。 改訂 そして 自動ドラフトハードコードされた制限を設定するよりも良い方法だ。
3.CSS/JSの連結はもう古い
以前は、特にBrotliやGzipのような効果的な圧縮方法ができる前は、ファイルの最小化と結合がウェブサイトの高速化に不可欠でした。ファイルサイズを小さくすることでminificationは今でも役立っていますが、ウェブサーバーレベルでファイルを縮小する、より高度な圧縮技術の台頭により、その重要性は低下しています。
今、本当に重要なのは、ページ上のリソースの読み込み方法と、それらがコンテンツの表示をブロックするかどうかです。スクリプトやスタイルシートがページコンテンツの読み込みを遅らせる場合、ユーザーの認識や検索エンジンのランキングに悪影響を及ぼしかねません。次のようなプラグインがあります。 Debloat または Autoptimize アセットを最適化することで、重要な要素を最初にロードし、重要でない要素を延期することができる。
4.画像処理は非常に複雑な問題である
画像は高画質であり、将来性もある必要がある。つまり、古いスマートフォンから4Kスクリーンまで、さまざまなデバイスで鮮明に表示できるように、高解像度でキャプチャして保存する必要があります。しかし、高解像度の画像はファイルサイズが大きくなり、ウェブサイトの読み込み時間が遅くなる可能性もあります。WordPressは、アップロードされた画像を異なるファイルサイズで自動的に複数生成するため、同じ画像を複数のバージョンで保存することができます。
非可逆圧縮や可逆圧縮は、ファイルサイズの大幅な削減を達成できるが、圧縮されたバージョンはすべての使用ケースに適しているとは限らず、将来的にはより優れた圧縮方法が登場するかもしれないため、元の高品質なファイルは保持する必要がある。
WebPとAVIFは最先端の圧縮フォーマットだが、その採用には賛否両論があり、従来のフォーマットと比較した場合のメリットも即座には明らかになっていない。さらに、検索エンジンは、これらの最新フォーマットを使用しないウェブサイトにペナルティを与える可能性を示唆している。
プラグインや外部サービスを利用しなければ、このすべてを自分で処理することはできません。WordPressで利用可能なあらゆるオプションをテストした結果、完璧なオプションは存在しないという結論に達しました、 EWWWイメージオプティマイザー がやはりベストだ。
EWWW IOは、外部APIサービスを使用して画像を圧縮し、サーバーからの処理負荷を軽減します。独自のCDNを活用し、各デバイスに正確な画像サイズを提供します。また、究極のパフォーマンス向上のために、サポートされている場合、画像のWebP/AVIFバージョンを自動的に提供します。このプラグインのプレミアムバージョンは、私たちの地味ですが寛大なに含まれています Goodies パッケージで提供される。
5.すべてのページビルダーはパフォーマンスの負担になる
誤解を恐れずに言えば、Gutenberg、Elementor、Bricks、Breakdanceなどのページビルダーは、WordPressに良い革命をもたらしている。Gutenberg、ブロックテーマ、FSEテーマは荒削りなスタートだったが、間違いなくWordPressの未来だ。
ElementorはWordPressコミュニティで批判されることも多いが、その人気と強力な機能はWix、Squarespace、Webflowのようなプラットフォームに匹敵する。
しかし クラシック・テーマ 通常 カスタマイズ メニューエントリー)で十分な場合は、ブロックテーマやページビルダーの代わりに使用することをお勧めします。また、ブロック機能を一切使う必要がないのであれば、Gutenbergを無効にすることも検討しよう。
クラシックエディターを復元する方法は、グローバルに、あるいは特定のユーザー向けに、たくさんありますが、最良の方法は、プラグイン Gutenbergを無効にする.
6.WooCommerceとそのプラグインがパフォーマンスの足を引っ張る
WordPressにEコマースソリューションをインストールすると、どうしても複雑さが増し、全体的なパフォーマンスに影響を与えます。オンラインストアを作成するための最も人気のあるプラグインであるWooCommerceは、実際のビジネスニーズを満たすために、最初の有効化以外にもセットアップが必要です。この機能ギャップを埋めるために、店舗オーナーはプラグインやカスタムコードに頼らざるを得ず、サイトがさらに遅くなる可能性があります。
このパフォーマンスへの影響は、ストアが成長し、トラフィックや注文が増えると特に顕著になります。この記事で取り上げた最適化テクニックは役立ちますが、許容できるパフォーマンスを維持するためには、サーバーリソースのスケーリングが必要になる時が来ます。WooCommerceでオンラインショップの運営を計画する際には、このシナリオを念頭に置いておくことが重要です。
7.常に警戒を怠らない
WordPressサイトは時間とともに複雑化するため、定期的なパフォーマンスチェックが重要です。サイトのスムーズな運営を維持するには、以下のようなプラグインをご利用ください。 クエリーモニター ページのロード時間やメモリの使用量など、サイトのパフォーマンス指標を定期的にチェックする。さらに WPデバッグ PHPのエラーやコンフリクトを調査し、解決する。
Query Monitorがパフォーマンスモニタリングに重点を置いているのに対し、WP Debuggingは主にエラーロギングとトラブルシューティングのためのものです。両方のツールを使用することで、サイトの健全性を維持するための包括的なアプローチを提供します。
1.DNS:クラウドフレア
すべてはDNS管理から始まり、最も高速で信頼できるプロバイダーは紛れもなくCloudflareです。あらゆるアクセスの先頭に位置するDNSは、ユーザーがサイトにアクセスする際に最初にアクセスするものであり、高速である必要があります。
以下のデフォルト以外の設定を適用する:
スピード(最適化)
- スピード・ブレインについて
- ロケットローダーオン
- WordPressの自動プラットフォーム最適化(APO):オン
- 0-RTT 接続再開:オン
キャッシング
- ブラウザのキャッシュTTL:既存のヘッダーを尊重する
- クローラーのヒントオン
- 階層型キャッシュ:階層型キャッシュ・トポロジー
2.ハードウェア
WordPressを運用するには、十分なスペックが必要です。できれば、レイビームのようにインストールごとに1台のマシン(またはVPS)を用意するのが望ましいでしょう。一般的なホスティング会社や "マネージドWordPressホスティング "であっても、同じサーバー上やコンテナ化された環境で、何百もの他のホスティング会社とあなたのサイトを一緒にしてしまいます。これは通常、コスト削減と容易なスケーラビリティを提供するために行われますが、パフォーマンスやセキュリティの問題が発生する可能性があります。
私たちのサーバーはすべてContaboで稼働しており、素晴らしいパフォーマンスを保証する素晴らしいハードウェアを備えています:
- すべてのAMD EPYC CPU;
- ストレージはNMVeのSSDのみ;
- 9つの地域に12のデータセンターがあり、レイテンシーを最小限に抑えている;
- 32TBのトラフィック(オーストラリアと日本は10TB)。
3.サーバーUbuntu + WordOps
Ubuntu 22.04は、デフォルトのインストールに最適なLinuxディストリビューションです。Ubuntu 22.04は、サーバーで広く使用されており、長年にわたって非常に信頼できることが証明されており、強力なコミュニティを誇っています。
さらに、WordOpsを活用してサーバーとWordPressサイトを管理しています。このツールには、パフォーマンスのデフォルト設定や、チューニングされたバージョンのMariaDB、PHP、Nginxが含まれています。
セーフガード スワップ 少なくとも 2GB 特にMySQLからの高価なジョブがまれにサーバーをダウンさせるのを防ぐために、利用可能なRAMに比例して追加されます。
4.キャッシュ:
私たちのキャッシング・システムは階層型アーキテクチャを採用しており、各キャッシュ層がそれぞれ特化した最適化を適用している。この階層化されたアプローチにより、キャッシング・システムは、より上位のキャッシュが下位のキャッシュの能力をベースにして、徐々にパフォーマンスを向上させることができる:
- オペキャッシュ:Zend OPcache は PHP 5.5 以降でデフォルトで有効になっています。詳しくは この記事はWP Rocketによって提供された;
- オブジェクト・キャッシュ:私たちは、すべてのインストールでデフォルトでRedisを有効にしています。 Redis Object Cache プラグイン. ウェトピが記事を掲載 WordPressでRedisを使用する際の現実的な期待について;
- ページキャッシュ:WordOpsは、Redisが有効な場合、Nginxで構築されたRedisページキャッシュを提供します;
- ブラウザのキャッシュ: Nginx用の優れたブラウザキャッシュデフォルトはWordOpsによってデフォルトでパッケージ化されており、Brotli圧縮も含まれています;
- エッジ・キャッシュ:有料サービスのCloudflare APOは、Goodiesパッケージの一部としてすべてのプランに含まれており、WordPressのページキャッシュとエッジキャッシュのハイブリッドとして機能し、ページの静的コピーを作成してすべてのゾーンに送信します。Nginxのブラウザキャッシュを完全に上書きするわけではありませんが、ヘッダーを変更することができることに注意してください。これに関する最高の記事は これはブライアン・リー氏提供.

コメントを残す