3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPCMS の静的ページでも遅い? head整理と画像・JS読み込みで Core Web Vitals を底上げする実戦メモ

3
Last updated at Posted at 2025-12-22

タイトル案:PHPCMS v9 の静的ページでも遅い? head整理と画像・JS読み込みで Core Web Vitals を底上げする実戦メモ

「静的HTMLにしてるのに、なぜか体感が重い」。この現象、わりと普通に起きます。静的化はサーバ側の処理を軽くしてくれますが、ユーザーが感じる速さ(首画面が出るまで、押した反応、画面の揺れ)は、結局ブラウザが何をどう読むかで決まります。

ここでは PHPCMS v9(テンプレート生成+静的出力)で運用しているコンテンツサイトを想定して、再現性が高い改善ポイントをまとめます。具体例として、一部の確認には「一禅堂 恋みくじ」) を参照しました(これは事例として触れるだけで、宣伝目的ではありません)。

  1. 静的ページでも遅くなる典型パターン
    静的化しても遅い原因の多くは、ブラウザ側の読み込み順と優先度にあります。よくあるのは次のようなものです。
    ・CSS が多く、レンダリングをブロックしている
    ・head の先頭に重い JS や外部スクリプトを積みすぎている
    ・ファーストビューの画像が重く、LCP(最大コンテンツ表示)が伸びる
    ・Webフォントの読み込みが遅く、レイアウトが揺れて CLS(レイアウトのずれ)が悪化する
    ・画像やカード部品のサイズが確定しておらず、読み込み途中で配置がズレる

静的化は「サーバの速さ」には効きますが、「描画の速さ」は別のゲームです。別のボスが出てきます。

  1. 目標は3つに分解すると迷わない
    経験上、目的を次の3つに割ると施策がブレにくいです。
    ・首画面をなるべく早く“読める状態”にする(ブロック要素を減らす)
    ・画面を揺らさない(CLS を落とす)
    ・操作が引っかからない(INP を守る、JS の負荷を下げる)

  2. head を整理するだけで勝手に速くなることがある
    PHPCMS v9 の強みはテンプレで head を共通化できることです。逆に弱点は、テンプレを継ぎ足し続けると head が「何でも置き場」になりがちなこと。

head の並びを、ざっくり次の順に整えるだけでも効果が出やすいです。
・基本宣言(文字コード、viewport)
・SEO 必須(title、description、canonical)
・最優先の表示に必要なもの(重要CSS、フォント接続、ファーストビュー画像の優先ヒント)
・後回しでいいもの(解析系、広告系、ウィジェット系、使うかわからない外部ライブラリ)

特に、解析や広告などの外部スクリプトを head の先頭に置くと、首画面が出る前に余計な通信と実行が始まります。まず“表示”を勝たせるのが基本です。

  1. CSS は「最初に必要な分」だけ先に届ける
    コンテンツサイトは CSS が肥大化しがちです。理想はクリティカルCSS(ファーストビューに必要な最小限)を先に、残りを後にすること。

難しそうに聞こえますが、やることはシンプルで、「首画面表示までに必要な CSS を増やさない」「不要なライブラリを削る」「共通CSSを薄くする」だけでも、レンダリングブロックを減らせます。

  1. JS は“基本は後”で、必要なら“ユーザー操作後”
    PHPCMS v9 の記事ページのように、読むのが主体のページでは、初回表示に必須の JS は少ないはずです。にもかかわらず、head で JS を同期読み込みしているケースがよくあります。

方針としては以下が安全です。
・初回表示に不要な JS は後回し(HTML が描画されてから)
・計測系、埋め込み系、装飾系は「スクロール後」「クリック後」などに遅延しても成立する
・依存関係がある JS は読み込み順が崩れないようにする

“先に読むほど正義”ではなく、“先に読ませるべきものだけ先に”が正義です。

  1. 画像は LCP の主犯になりやすい
    速度指標の中で、LCP が悪い原因はだいたい画像です。特にファーストビューの大きな画像(ヒーロー画像やOGP兼用のヘッダー画像など)が遅いと、体感も指標も一気に落ちます。

改善の基本は次の3点です。
・ファーストビュー画像は軽くする(WebP/AVIF、適切なサイズ)
・画像やカードの表示サイズを事前に確定して CLS を抑える
・首画面以外の画像は遅延読み込みで転送量を減らす

注意点として、首画面の最大画像まで遅延読み込みにすると逆効果になり得ます。重要な画像だけは優先して届ける、という分け方が大事です。

  1. フォントは“見た目の宗教戦争”になりがちなので割り切る
    Webフォントは雰囲気を作りますが、読み込みが遅いと文字が出なかったり、出た瞬間にガタッと動いたりします。これが CLS の原因になります。

実運用では、「まず読める」を優先して、フォント読み込みの遅延や表示戦略を決めると安定します。フォントにこだわるほど、技術的には“優先順位設計”が重要になります。

  1. キャッシュ戦略は“静的サイトのボーナスステージ”
    静的出力の強みは、CSS/JS/画像を長期キャッシュしやすいことです。ファイル名にバージョンを付ける運用(更新時だけ新しいファイル名にする)にしておけば、ブラウザキャッシュが効いて二回目以降が劇的に速くなります。

HTML は更新があるので短めでもいいですが、アセット類は長く持たせると費用対効果が高いです。

  1. 計測は“同じ条件”で比較しないと幻覚を見る
    最適化の怖いところは、改善した気になりやすいことです。測るなら最低限、次を守るとブレが減ります。
    ・同じ端末、同じネットワーク条件、同じ測定モードで比較
    ・Lighthouse の点数だけでなく、実ユーザー指標(Search Console / CrUX)が取れるなら確認
    ・テンプレ単位で効果が出ているかを見る(1ページだけ速いは偽物になりやすい)

まとめ
PHPCMS v9 の静的サイトは、テンプレで head と読み込み戦略を整えられるので、いったん型を作ると全ページがまとめて良くなります。静的化はスタート地点で、そこから「何を先に描画させるか」「何を後回しにするか」を設計すると、体感も指標も自然に底上げされます。

事例参照(ケースとしてのリンク):一禅堂 恋みくじ

この手の改善は派手な魔法ではないけど、地味に強いです。テンプレの秩序が、ユーザー体験を救います。

3
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?