小説家になろうにて「キモオタでギャルゲー、それって何の罰ゲーム!?」連載中!

js・cssのレンダリングブロックを排除する ~PageSpeed InsightsとGTmetrixのスコアを改善してみる(第2回) 

カスタマイズ&プラグイン
この記事は約8分で読めます。

本記事は、KUSANAGI for ConoHa(1Gプラン)でPageSpeed InsightsとGTmetrixのスコア改善を図った過程です。
PageSpeed Insightsは旧版ですが、やることは同じです。

アイキャッチの画像につき、(C)GMO Internet, Inc. 再利用禁止

スポンサーリンク
この記事を読む方へのオススメ

今回の作業の効果

具体的にはプラグインの見直し、そして手作業によるjsとCSSの排除です。

冒頭の画像は今回の作業を終えたときのイメージ。
結構だるいです。
しかし終わったら劇的な効果があります。

具体的には、次の通り。

レンダリングブロックしているCSSとJSを排除しなかった場合のスコア。

対策した場合のスコア

モバイル73→95

パソコン88→96

スポンサーリンク

プラグインの見直し

アンインストールするプラグインを探す

まず大前提としてプラグインを見直します。
便利だからとか名前が知られているからという理由で入れたままにしてるプラグインは多いのですが、外せるものは外します。
これは後の作業を楽にするためと、サイト全体の高速化を図るのとがあります。

もちろん、レンダリングブロックしているプラグインは筆頭。
機能が必要なら「(プラグイン名) プラグイン無し」とか「(プラグインの機能) 軽量」でインターネット検索をかけます。

私が外したり交換したりしたプラグインは、例えばこんな感じです

人気記事:WordPress Popular Posts→simple-ga-ranking

Simple GA RankingでGoogle Analyticsを利用した人気記事ウィジェットを作ってサイトを高速化する(Cocoon完全対応)
Simple GA Rankingを使ってサイドバーに人気記事を表示する方法を紹介します。Google Analyticsのデータを利用しているため、他のWordPressプラグインと比較すると負担が軽く、サイトの高速化に役立ちます。導入手順は面倒ですが本記事通りにすればきっとできます。

サーバー負荷が軽くなるという話なので。
CSSはLuxeritasの新着記事のものを、同じID・クラス名にすることで流用しています。

著者情報:Simple Author Box→アンインストール

著者情報(この記事を書いた人)をプラグインなしで設置する(2020年増補改訂)
本記事は、記事の著者情報コーナーをプラグインなしで設置する方法の紹介です。 著者情報は読者を集める、記事をより強く訴えるという点において大きな役割を担っています...

自作しました

ハイライト:crayon syntax highlighter→highlight.js

「SyntaxHighlighter」WordPressプラグインの役割、負荷の比較
本記事の内容は色んなSyntaxHighlighterプラグイン(Crayonなど)のレビュー・負荷比較、結論として推薦するWP Code Highlight.jsの説明です

Crayonは無駄に重いプラグインナンバーワンですので。
なおhighlight.jsのcssは子テーマに貼って読み込ませることでレンダリングブロックを回避しています。
そんなに量も多くありませんので。

固定ページの子ページリスト:Child Pages Shortcode→アンインストール

自作しました。

Jetpack→アンインストール

吟味した結果、どの機能も要らないと判断しました。
ウィジェット条件分岐だけWidget Logicを入れました。
Cocoon、Luxeritasであればウィジェット条件分岐の機能があります。

関連記事:WordPress Related Posts→Luxeritasの関連記事コードを抜いて、ウィジェットで実行

効果あるかわかりませんが、少なくともCSSは減らせます。

セキュリティ:SiteGuard→Google Authenticator、Login rebuilder

Login rebuilder~KUSANAGI(Nginx)でログインページURLを変更できるセキュリティプラグイン
本記事はプラグインLogin rebuilderの紹介です。Login rebuilderはWordPressのログイン画面を変更することでセキュリティを強化します。他と違いNginxでも動くのがポイント、KUSANAGIユーザーには重宝します。

逆に増えていますが、SiteGuardはNginxですと使える機能が限られますので仕方ありません。
現在はNginxでも使えます。
Login rebuilderとお好みの一方で構いません。

Google Authenticatorはスマートフォンを使った二重認証システムです。
LuxeritasについているGoogle画像認証で十分とは思うので、割り切れば一つ減らせます。

などなど、です。

停止できるプラグインを探す

使う時にだけ動かせばいいプラグインは停止させます。
私の場合を以下に列挙します。

  • All-in-One WP Migration
    引越用プラグイン
  • Compress JPEG & PNG images
    PNG圧縮限定用
  • Duplicate Post
    ページ複製用
  • Force Regenerate Thumbnails
    サムネイルを作り直すプラグイン
  • Query Monitor
    デバッグ用プラグイン
  • Search Regex
    文字一括置換用プラグイン
スポンサーリンク

レンダリングブロックプラグインを手動で排除する

PageSpeed Insightsで計測すると、恐らくこんな画面が表示されます。

列挙されているプラグインをトップページで読み込ませないようにします。

1 プラグインIDを調べるためのコードをfunctions.phpに貼り付ける。

「ゆっくりと…」(@tokkonoPapa)様の記事より。

http://tokkono.cute.coocan.jp/blog/slow/index.php/wordpress/concatenate-resources/ リンク切れ

/**
 * Make the list of enqueued resources
 **/
function my_get_dependency( $dependency ) {
 $dep = "";
 if ( is_a( $dependency, "_WP_Dependency" ) ) {
 $dep .= "$dependency->handle";
 $dep .= " [" . implode( " ", $dependency->deps ) . "]";
 $dep .= " '$dependency->src'";
 $dep .= " '$dependency->ver'";
 $dep .= " '$dependency->args'";
 $dep .= " (" . implode( " ", $dependency->extra ) . ")";
 }
 return "$dep\n";
}
 
function my_style_queues() {
 global $wp_styles;
 echo "<!-- WP_Dependencies for styles\n";
 foreach ( $wp_styles->queue as $val ) {
 echo my_get_dependency( $wp_styles->registered[ $val ] );
 }
 echo "-->\n";
}
add_action( 'wp_print_styles', 'my_style_queues', 9999 );
 
function my_script_queues() {
 global $wp_scripts;
 echo "<!-- WP_Dependencies for scripts\n";
 foreach ( $wp_scripts->queue as $val ) {
 echo my_get_dependency( $wp_scripts->registered[ $val ] );
 }
 echo "-->\n";
}
add_action( 'wp_print_scripts', 'my_script_queues', 9999 );

なお、調べ終わったら削除します。

2 プラグインIDを調べる

次はプラグインのIDを調べます。
1のコードを貼り付けるとhtmlソースにIDがまとめて表示されている……

はずなのですが、私の環境では表示されませんでした。
(html、js、cssの圧縮・結合は一旦解除、キャッシュ、CDNも解除、別のテーマでも試しましたので恐らく何かと干渉しています。あるいは単に見落としているか)

仕方ないので直接ソースを見て調べます。
こんな感じでIDが記載されています。

3 functions.phpに排除するコードを記述する

Easy Table of Contentsを例に取るとこんな感じです。

add_action( 'wp_enqueue_scripts', 'deregister_styles' );
function deregister_styles() {
 if ( ! is_single() ) {
wp_dequeue_style( 'ez-toc' );
wp_dequeue_script( 'ez-toc' );
 }
}

「-css」を除いた部分を()に入れます。
目次プラグインですから、投稿ページ以外では不要なので条件分岐しています。
他のプラグインも同じように追加していきます。

しかし一部のプラグインは、この方法だと外せない場合があります。
私の場合ですとamazon.jsがそう。
そこで、次のコードによって排除します。

add_action( 'wp_print_styles', 'amazonjs_styles' );
function amazonjs_styles() {
 if ( ! is_single() ) {
wp_deregister_style( 'amazonjs' );
 }
}

ただ現在、wp_print_stylesは非推奨とされています。

Use wp_enqueue_scripts, not wp_print_styles, to enqueue scripts and styles for the frontend
If you are enqueueing scripts and styles, you will want to use one of these thre...

今回はやむなく使ったものですが、そもそもの話として、amazon.jsにかわるプラグインなりブックマークレットがないかと思案中です。
いい手段あれば誰か教えて下さい。

Jetpackは次のコードで外します。

add_filter('jetpack_implode_frontend_css','__return_false' );

私の環境では、これで排除できています。
こちらの記事を参考しました。

【WordPress】プラグイン[Jetpack]使用時に自動で読み込まれるスタイルシートを削除する方法。
WordPress のプラグイン[Jetpack]をアップデートしたところ、〜 内に意図しないスタイルシートが読み込まれるようになってしまいました。挿入されるコ...

これで全て排除できました。

スポンサーリンク

まとめ

腕力勝負と言える作業で疲れましたが、これで一気にスコアが上がりました。
次回は「表示可能コンテンツの優先順位を決定する」に挑戦します。

ブログやサイトを始めたい・引っ越したい方へ

レンタルサーバーWING。
KUSANAGI&WEXALが使えるVPS。
どちらでも高速でコスパに優れたConoHaで始めるのがおすすめです。
もっと知りたい方はボタンをクリックしてください。
(ボタン経由で入会した場合、1000円分のクーポンがもらえます)

この記事を書いた人

広島市内のパチンコホール勤務。
3号機時代からのパチンカス。
ADHD、精神障害者手帳3級所持。
慶應義塾大学商学部卒、専攻はマーケティング(広告・宣伝)
国家一種試験経済職の資格で公安調査庁に入庁。
在職時は国際テロ、北朝鮮を担当。
「小説家になろう」の底辺作者。
WordPress記事は素人の備忘録です。

天満川鈴をフォローする
カスタマイズ&プラグイン
スポンサーリンク

コメント

タイトルとURLをコピーしました