【Blogger】ブログの高速化に限界まで挑戦

2021/03/08
6

考えうる限りの手を尽くし、廃人になりかけながらブログを限界まで高速化してみました。結果は以下のような感じです。

PageSpeed Insights

PSIのスクリーンショット

GTmetrix

GTmetrixのスクリーンショット

Lighthouse

Lighthouseのスクリーンショット

いやぁ、、、嬉しい。特にPSIのモバイル99点なんて、以前では信じられない結果でした。あきらめずに続けて良かったです。

高速化のためにしたこと

細かいものに関してはちょくちょくやってますが、高速化のために行った対策で効果の大きかったものを挙げておきます。

  • 標準CSS/JavaScriptの無効化

    結構重たいので思い切って無効化。

  • head内処理の最適化

    DNSプリフェッチなど。

  • 不要なJavaScriptの削除

    Bloggerでは各所で不要なスクリプトが読み込まれていたりするので、いらないものは削除。

  • JavaScriptの非同期処理

    主にdeferによる非同期処理で読み込み速度向上。

  • 各種コード・ファイルの圧縮

    転送量が減るので読み込みが早くなる。

  • 画像の最適化配信

    画像サイズを小さくしたり、次世代フォーマットに変換することで読み込み速度向上。

  • 遅延読み込み

    img, iframeなどの遅延読み込み。

  • 外部スクリプトのインライン化

    highlight.js等をCDNではなくインラインにすることで転送量を削減。

  • HTML構造の簡略化

    HTML構造を簡略化することでレンダリング速度が向上。

  • テンプレートの最適化

    独自タグによる条件分岐で読み込みを最適化。

遅延読み込みだけでも、スコアや実際の表示速度が結構変わります。画像やメディアはサイズが大きくなりがちなので、圧縮したり遅延させたりすると効果が発揮されやすいです。

Bloggerの高速化については、こちらの「バグ取りの日々」さんの記事で細かく紹介されています。詳しい内容に興味がある方におすすめです。

Bloggerの表示速度を高速化する

忘却録です。Bloggerの高速化です。 結果 次の結果になりました。画像が古いため、現在は更に高速化しているはずです。 PageSpeed Insights GTmetrix Lighthouse (Audits) ウェブページ共通の高速化 長くなったため、記事を分割しました。...

特に効果が大きかったこと

高速化で特に効果が大きかったのは、標準CSS/JSの無効化遅延読み込みです。

標準JS/CSSの無効化に関して

デフォルトのままだと、いろいろなCSSやJSが勝手に読み込まれます。代表的なのはbundle.css, plusone.js, widgets.jsあたりです。地味にサイズが大きいので、使わない機能が多いと正直なところ迷惑。

全部無効化してしまえば大幅に転送量を削減できますが、デザインやウィジェットの機能に関係しているものもあるので注意が必要です。

標準CSS/JSはそれぞれhtmlタグでb:css='false', b:js='false'と設定することで無効化できます。

標準JSを無効化した場合

標準JSを無効化すると、以下のような影響があります。

埋め込みコメントで返信できなくなる

通常の書き込み自体は可能です。

画像の拡大画面が少し変になる

閉じるボタンが消えたりします。

レイアウト機能が死ぬ(追記あり)

レイアウトを見ることはできますが、ウィジェットの移動や編集が一切できなくなります。

追記:「水の中にはサメがいる!」さんが標準JSを無効化したままレイアウト画面を動かす方法を発見されました。詳しくは以下の記事をご参照ください。

【Blogger】標準 JS を無効にしつつレイアウト画面を動かす

一部ウィジェットへの影響

詳しくは未確認ですが、一部ウィジェットへの影響が予想されます。(Wikipediaなど)

コメントに関しては、埋め込みにこだわらなければフルページかポップアップにすることで標準JSなしでも自然なやり取りを演出できます。コメント欄は標準JSの影響を一部受けるので、実用化の際は少し改造する必要が出てきます。

※コメント欄の対処方法について記事を書きました↓

Bloggerのコメントを標準JSなしで実現 | IB-Note

Bloggerのコメントを、標準JSなしで自然に表示する方法についてご紹介します。

確認した範囲では、通常のサイト内検索やラベル、投稿表示等は問題ありませんでした。

補足

標準JSはfalsetrueにすればいつでも有効化できるので、レイアウトの調整時だけtrueにしておくと便利です。

遅延読み込みに関して

当ブログでは、画像その他の遅延読み込みのため独自に作成したスクリプトを導入しています。

ネイティブLazyloadよりも確実に遅延読み込みされるようになったため、画像などの転送サイズを大幅に減らすことができました。詳しくは以下の記事をご参照ください。

特定タグのリソースを遅延読み込みさせるスクリプト | IB-Note

img, iframeといったタグのリソースを遅延読み込みさせるスクリプトを作成しました。外部ライブラリを一切使用せず、JavaScriptのみで実現したシンプルな遅延読み込み機能です。

高速化のメリット

しばしば大きな犠牲(修正にかかる時間など)も付き物ですが、高速化には非常に良いメリットがあります。具体的には…

表示速度が速くなるのでストレスフリー

SEO的に良い影響があるかも

スコアを見て感慨に浸れる

などなど。表示速度が速いほうが読者としても嬉しいですし、ユーザー第一なGoogle先生の評価も確実にアップすることが見込めます。

PSIで90点超えてからは完全に自己満の世界ですが、高速化に際していろいろ見ていると勉強になりますし、やりがいは十分。一度本格的に取り組んでみると良い経験になります。

6件のコメント
些細なものですが、Xとチェックマークの色が変われば、もう少し見る良いという気がしました。
こんにちは。モバイルで99は凄いですね^^;
以前にふじやん。さんが高速化の記事で不必要な標準CSSを削除を紹介したりしていたのを見て、いつか真似しよう…と思いながら僕は未だに放置状態。(ゴミ部屋を見て見ぬ振りしている状態かも)

後回しになっていますが、今後ブログの高速化に取り組みたくなったらFumaさんの記事も参考にさせて頂きますm(_ _)m
>BINUBALLさん
ご意見ありがとうございます。自分的には今の色が良いかなぁと思っていましたが、環境によっては見づらいかもしれませんね。配色についてまた見直してみようと思います。
>ひき太郎さん
こんにちは。コメントありがとうございます。

紆余曲折はありましたが、ついにモバイル99点まで到達することができました。自分としてもだいぶやり切れたかなと思います(;´∀`)

高速化の詳しい内容については追々記事にしていくつもりなので、良ければぜひ参考にしてください(^^)
こんばんは。
細部まで高速化の徹底をされているようでほんとすごいですね~
うちもBloggerのJSを無効化しようと思ったものの、コメント投稿者のアイコンが出なくなるのを解決できなくて外せずにいる状況です(^^;
高速化の詳しい内容について追々記事にしていかれるとのことで、アイコンの件も解説して頂ければ幸いです(^^)
ふじやんさん、こんばんは。コメントありがとうございます(^^)

私も同じくコメント欄で手こずって、しばらく悩んでいました。標準JSを削除すると投稿者のアイコンになぜかdisplay: noneが適用されるようで、テンプレートそのものをいじって無理やり解決しました(^^;)

実は、data:comment.authorAvatarSrcで投稿者のアイコンURLが呼び出せるので、それをimgタグにセットすればアイコンが表示できます。Blogger Code PEに情報が載っていて助かりました。