[Web] CSSとJSロード最適化

[Web] CSSとJSロード最適化

2023-04-08 hit count image

ウェブページでJSとCSSをロードする部分がウェブページの性能に影響されないように最適化する方法について説明します。

概要

GoogleChromeブラウザではウェブページの性能を測るLighthouseと言う機能を提供してます。この機能を使うとウェブページの全般的な性能を確認することができて、次のように問題点も確認することができます。

Optimization loading Google web font - Lighthouse Eliminate render-blocking resources issue of google web font

このブログポストではCSSJSのローディングを最適化してReduce unused JavaScriptReduce unused CSS問題を解決する方法について説明します。

Preconnect

Preconnectは現在ページで外部ドメインのリソースを取ってくる時、ウェブブラウザで事前にドメインと連結できるようにしてくれます。

Preconnectは次のように使えます。

<link rel="preconnect" href="https://example.com">

これを活用してCSSまたはJSをロードする速度を上げることができます。CSSJSをロードする速度を上げるため<head />を次のように修正します。このブログポストではBootstrapを例で使いました。

<head>
  <link rel="preconnect" href="https://cdn.jsdelivr.net">
  ...
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
</head>

Preload

Preloadは現在のウェブページで使うリソースをウェブブラウザがページのレンダリングする前にロードできるようにしてくれます。

Preloadは次のように使えます。

<link rel="preload" as="script" href="example.js" />
<link rel="preload" as="style" href="example.css" />

これを活用するとCSSJSをロードする速度を上げることができます。CSSJSをロードする速度を上げるため次のように修正します。

<head>
  ...
  <link
    rel="preload"
    as="style"
    href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
  />
  <link
    rel="preload"
    as="script"
    href="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
  />
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
</head>

完了

これでウェブページで性能を上げるためCSSJSのローディングを最適化する方法についてみてみました。Lighthouseでよく発生する指摘なので、今回よく覚えておくといいと思います。もしブラウザではなくローカルやCI環境でLighthouseを実行する方法について確認したい方は下記のリンクを参考してください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts