8000 GitHub - GameWith/Front-End-Performance-Checklist: 🎮 The only Front-End Performance Checklist that runs faster than the others
[go: up one dir, main page]

Skip to content

GameWith/Front-End-Performance-Checklist

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

194 Commits
 
 
 
 
 
 
 
 
 
 
 
 


Front-End Performance Checklist

  Front-End Performance Checklist  

🎮 何よりも早ã動作ã™ã‚‹ãŸã‚ã®å”¯ä¸€ã®ãƒ•ロントエンドパフォーマンスãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆã§ã™ã€‚

シンプルãªãƒ«ãƒ¼ãƒ«: "パフォーマンスを考慮ã—ã¦ãƒ‡ã‚¶ã‚¤ãƒ³ãƒ»ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã™ã‚‹ã“ã¨"

      PRs Welcome         Discord           Licence MIT  

  ä½¿ã„æ–¹ • Contributing • ロードマップ • Product Hunt

🇨🇳 🇫🇷 🇰🇷 🇵🇹 🇷🇺

Other Checklists:
🗂 Front-End Checklist • 💎 Front-End Design Checklist

Table of Contents

  1. HTML
  2. CSS
  3. Fonts
  4. Images
  5. JavaScript
  6. サーム(作æˆä¸­ï¼‰
  7. JS Frameworks (作æˆä¸­ï¼‰

ã¯ã˜ã‚ã«

パフォーマンスã¯å¤§ããªãƒ†ãƒ¼ãƒžã§ã™ãŒã€ã„ã¤ã‚‚ "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰" ã‚„ "管ç†è€…" ã®å•題ã¨ã„ã†ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。フロントエンドã®è²¬ä»»ç¯„囲ã§ã‚‚ã‚りã¾ã™ã€‚ã“ã®ãƒ•ロントエンドパフォーマンスãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆã¯ã€ãƒ•ロントエンド開発者ã¨ã—ã¦ãƒ—ロジェクト(個人ã§ã‚‚業務ã§ã‚‚)ã«å……ãŸã‚‹å ´åˆã«ã€ç¢ºèªã‚‚ã—ãã¯æ°—ã«ã—ã¦ãŠãã¹ã項目を網羅的ã«ãƒªã‚¹ãƒˆã‚¢ãƒƒãƒ—ã—ãŸã‚‚ã®ã§ã™ã€‚

ä½¿ã„æ–¹

å„ルールã«ã¯ã€ã“ã®ãƒ«ãƒ¼ãƒ«ãŒé‡è¦ã§ã‚ã‚‹ ç†ç”± 㨠修正ã™ã‚‹ 方法 を記載ã—ã¦ã„ã¾ã™ã€‚ã‚ˆã‚Šè©³ç´°ãªæƒ…å ±ã¯ã€ 🛠: ツール〠📖: 記事〠📹: 動画サイト ã®ãƒªãƒ³ã‚¯ã‚’å‚ç…§ã—ã¦ãã ã•ã„。

フロントエンドパフォーマンスãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆ ã¯ã€ã©ã‚Œã‚‚最高ã®ãƒ‘ãƒ•ã‚©ãƒ¼ãƒžãƒ³ã‚¹ã‚¹ã‚³ã‚¢ã‚’é”æˆã™ã‚‹ãŸã‚ã«ã¯ä¸å¯æ¬ ãªé …ç›®ã§ã™ãŒã€ã©ã®ãƒ«ãƒ¼ãƒ«ã‚’優先的ã«é©ç”¨ã™ã¹ãã‹ã‚’3段階ã§ç¤ºã—ã¦ã„ã¾ã™ã€‚

  • Low ã¯ã€å„ªå…ˆåº¦ãŒ 低 ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚
  • Medium ã¯ã€å„ªå…ˆåº¦ãŒ 中 ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ ã“ã®ãƒ«ãƒ¼ãƒ«ã®é©ç”¨ã‚’é¿ã‘ã‚‹ã¹ãã§ã¯ã‚りã¾ã›ã‚“。
  • High ã¯ã€å„ªå…ˆåº¦ãŒ 高 ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ ã“ã®ãƒ«ãƒ¼ãƒ«ã«å¾“ã„ã€æŽ¨å¥¨ã•れる方法ã§å®Ÿè£…ã—ã¦ãã ã•ã„。

パフォーマンスツール

ウェブサイト ã¾ãŸã¯ アプリケーションã®ãƒ†ã‚¹ãƒˆã‚„モニタリングã«ä½¿ç”¨ã§ãるツールã®ãƒªã‚¹ãƒˆ:

å‚考文献


HTML

html

  • HTML ã®è»½é‡åŒ–(Minified): medium HTML コードã¯åœ§ç¸®ã•れã€ã‚³ãƒ¡ãƒ³ãƒˆã€ç©ºç™½ã€æ”¹è¡ŒãŒæœ¬ç•ªã®ãƒ•ァイルã‹ã‚‰å‰Šé™¤ã•れã¦ã„ã‚‹ã“ã¨ã€‚

    ç†ç”±:

    ä¸è¦ãªã‚¹ãƒšãƒ¼ã‚¹ã€ã‚³ãƒ¡ãƒ³ãƒˆã€ãƒ–レークを全ã¦å‰Šé™¤ã™ã‚‹ã¨ã€HTML ã®ã‚µã‚¤ã‚ºãŒå°ã•ããªã‚Šã€ã‚µã‚¤ãƒˆã®ãƒšãƒ¼ã‚¸ã®èª­ã¿è¾¼ã¿æ™‚é–“ãŒçŸ­ç¸®ã•れã€ãƒ¦ãƒ¼ã‚¶ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«ã‹ã‹ã‚‹æ™‚é–“ãŒæ˜Žã‚‰ã‹ã«è»½æ¸›ã•れã¾ã™ã€‚

    方法:

    ã»ã¨ã‚“ã©ã®ãƒ•レームワークã«ã¯ã€Web ページを容易ã«åœ§ç¸®ã™ã‚‹ã“ã¨ãŒã§ãるプラグインãŒã‚りã¾ã™ã€‚自動的ã«ã‚¸ãƒ§ãƒ–を実行ã§ãる多ãã® NPM モジュールを使用ã§ãã¾ã™ã€‚

  • ä¸è¦ãªã‚³ãƒ¡ãƒ³ãƒˆã®å‰Šé™¤: low コメントãŒãƒšãƒ¼ã‚¸ã‹ã‚‰å‰Šé™¤ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

    ç†ç”±:

    コメントã¯ãƒ¦ãƒ¼ã‚¶ã«ã¨ã£ã¦ä½•ã‚‚å½¹ã«ç«‹ãŸãªã„ã®ã§ã€æœ¬ç•ªã®ãƒ•ァイルã‹ã‚‰ã¯å‰Šé™¤ã™ã¹ãã§ã™ã€‚ã‚³ãƒ¡ãƒ³ãƒˆã‚’ä¿æŒã—ãŸããªã‚‹ã‚±ãƒ¼ã‚¹ã¯ã€ãƒ©ã‚¤ãƒ–ラリã®ã‚½ãƒ¼ã‚¹ã‚’ä¿æŒã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆãらã„ã§ã™ã€‚

    方法:

    ã»ã¨ã‚“ã©ã®å ´åˆã€ã‚³ãƒ¡ãƒ³ãƒˆã¯ HTML 圧縮プラグインを使ã£ã¦å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

  • ä¸è¦ãªå±žæ€§ã®å‰Šé™¤: low type="text/javascript" ã‚„ type="text/css" ã®ã‚ˆã†ãªã‚¿ã‚¤ãƒ—属性ã¯ã€ã‚‚ã¯ã‚„å¿…è¦ã§ã¯ãªã„ãŸã‚削除ã™ã¹ãã§ã™ã€‚

    <!-- Before HTML5 -->
    <script type="text/javascript">
        // JavaScript code
    </script>
    
    <!-- Today -->
    <script>
        // JavaScript code
    </script>

    ç†ç”±:

    HTML5 ã§ã¯ãƒ‡ãƒ•ォルト㧠text/css 㨠text/javascript ãŒå«ã¾ã‚Œã¦ã„ã‚‹ãŸã‚ã€ã‚¿ã‚¤ãƒ—属性ã¯å¿…è¦ã‚りã¾ã›ã‚“。未使用ã®ã‚³ãƒ¼ãƒ‰ã¯ãƒšãƒ¼ã‚¸ã‚’é‡ãã™ã‚‹ãŸã‚ã€ã‚¦ã‚§ãƒ–サイトやアプリã§ä½¿ç”¨ã•れãªã„コードã¯å‰Šé™¤ã™ã¹ãã§ã™ã€‚

    方法:

    ã™ã¹ã¦ã® <link> ãŠã‚ˆã³ <script> ã‚¿ã‚°ã« type 属性ãŒãªã„ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

  • CSS ã‚¿ã‚°ã¯å¿…ãš JavaScript ã‚¿ã‚°ã®å‰ã«é…ç½®: high å¿…ãš CSS ㌠JavaScript コードã®å‰ã«ãƒ­ãƒ¼ãƒ‰ã•れるã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

    <!-- Not recommended -->
    <script src="jquery.js"></script>
    <script src="foo.js"></script>
    <link rel="stylesheet" href="foo.css"/>
    
    <!-- Recommended -->
    <link rel="stylesheet" href="foo.css"/>
    <script src="jquery.js"></script>
    <script src="foo.js"></script>

    ç†ç”±:

    JavaScript ã®å‰ã« CSS ã‚¿ã‚°ã‚’ç½®ãã¨ã€ã‚ˆã‚ŠåŠ¹çŽ‡çš„ãªä¸¦åˆ—ダウンロードãŒå¯èƒ½ã¨ãªã‚Šã€ãƒ–ラウザã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°æ™‚é–“ãŒçŸ­ç¸®ã•れã¾ã™ã€‚

    方法:

    <head> 内㮠<link> 㨠<style> ãŒã€å¸¸ã« <script> ã®å‰ã«ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

  • iframe ã®æ•°ã‚’最å°é™ã«æŠ‘ãˆã‚‹: high iframe ã¯ä»–ã®æŠ€è¡“çš„ãªå¯èƒ½æ€§ãŒãªã„å ´åˆã«ã®ã¿ä½¿ç”¨ã—ã¦ãã ã•ã„。ã§ãã‚‹é™ã‚Š iframe ã®ä½¿ç”¨ã‚’é¿ã‘ã¾ã—ょã†ã€‚

  • prefetchã€dns-prefetchã€prerender ã§ã®äº‹å‰èª­ã¿è¾¼ã¿ã«ã‚ˆã‚‹æœ€é©åŒ–: low 一般的ãªãƒ–ラウザã§ã¯ã€<link>ã‚¿ã‚°ã« "rel" 属性ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–指定ã™ã‚‹ã“ã¨ã§ç‰¹å®šã® URL を事å‰èª­ã¿è¾¼ã¿ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

    ç†ç”±:

    事å‰èª­è¾¼ã¿ï¼ˆPrefetching)ã«ã‚ˆã‚Šã€ãƒ–ラウザã¯ãƒ¦ãƒ¼ã‚¶ãŒè¿‘ã„å°†æ¥ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å¯èƒ½æ€§ã®ã‚るコンテンツã®è¡¨ç¤ºã«å¿…è¦ãªãƒªã‚½ãƒ¼ã‚¹ã‚’事å‰ã«å–å¾—ã—ã¦ãŠãã“ã¨ãŒã§ãã¾ã™ã€‚ブラウザã¯ã“れらã®ãƒªã‚½ãƒ¼ã‚¹ã‚’キャッシュã«ä¿å­˜ã™ã‚‹ã®ã§ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒç•°ãªã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’使ã£ã¦ã„ã‚‹å ´åˆã§ã‚‚ Web ページã®èª­ã¿è¾¼ã¿ã‚’高速化ã§ãã¾ã™ã€‚ Web ページã®èª­ã¿è¾¼ã¿ãŒå®Œäº†ã—ã€ã‚¢ã‚¤ãƒ‰ãƒ«æ™‚é–“ãŒçµŒéŽã™ã‚‹ã¨ã€ãƒ–ラウザã¯ä»–ã®ãƒªã‚½ãƒ¼ã‚¹ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’é–‹å§‹ã—ã¾ã™ã€‚ユーザãŒç‰¹å®šã®ãƒªãƒ³ã‚¯ï¼ˆäº‹å‰èª­ã¿è¾¼ã¿æ¸ˆã¿ï¼‰ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã¨ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯å³æ™‚ã«æä¾›ã•れã¾ã™ã€‚

    方法:

    ⃠<link> ã‚¿ã‚°ãŒ<head> タグ内㫠ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

⬆ ãƒˆãƒƒãƒ—ã«æˆ»ã‚‹

CSS

css

  • ファイルã®è»½é‡åŒ–(minification): high ã™ã¹ã¦ã® CSS ファイルã¯åœ§ç¸®ã•れã€ã‚³ãƒ¡ãƒ³ãƒˆã€ç©ºç™½ã€æ”¹è¡ŒãŒæœ¬ç•ªã®ãƒ•ァイルã‹ã‚‰å‰Šé™¤ã•れã¦ã„ã¾ã™ã€‚

    ç†ç”±:

    CSS ファイルã®åœ§ç¸®ã‚’行ã†ã¨ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®èª­ã¿è¾¼ã¿æ™‚é–“ãŒæ—©ããªã‚Šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«é€ä¿¡ã•れるデータãŒå°‘ãªããªã‚Šã¾ã™ã€‚å¸¸ã«æœ¬ç•ªç”¨ã® CSS ファイルã¯åœ§ç¸®ã•れã¦ã„ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚帯域幅やリソース使用é‡ã‚’削減ã—ãŸã„ビジãƒã‚¹ãƒ¦ãƒ¼ã‚¶ã«ã¨ã£ã¦æœ‰ç›Šã§ã™ã€‚

    方法:

    ⃠ビルドã¾ãŸã¯ãƒ‡ãƒ—ロイメントã®å‰ã¾ãŸã¯é€”中ã§ãƒ•ァイルを自動的ã«åœ§ç¸®ã™ã‚‹ãƒ„ールを使用ã—ã¾ã™ã€‚

  • ファイルã®çµåˆ: medium CSS ファイルを1ファイルã«çµåˆã—ã¾ã™ã€‚ (HTTP/2 ã§ã¯å¸¸ã«æœ‰åйã¨ã¯é™ã‚Šã¾ã›ã‚“)

    <!-- Not recommended -->
    <link rel="stylesheet" href="foo.css"/>
    <link rel="stylesheet" href="bar.css"/>
    
    <!-- Recommended -->
    <link rel="stylesheet" href="foobar.css"/>

    ç†ç”±:

    ã¾ã  HTTP/1 を使用ã—ã¦ã„れã°ã€ãƒ•ァイルをçµåˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。もã—サーãƒãŒ HTTP/2 を使用ã—ã¦ã„ã‚‹å ´åˆã¯ãã®é™ã‚Šã§ã¯ã‚りã¾ã›ã‚“。(テストを行ã†å¿…è¦ãŒã‚りã¾ã™ï¼‰

    方法:

    ⃠ビルドå‰ã‹ãƒ“ルド中ã€ã‚‚ã—ãã¯ãƒ‡ãƒ—ロイå‰ã‹ãƒ‡ãƒ—ロイ中ã«ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã®ãƒ„ールもã—ãã¯ãƒ—ラグインを使ã£ã¦ãƒ•ァイルをçµåˆã—ã¾ã™ã€‚
    ⃠もã¡ã‚ã‚“ã€çµåˆã«ã‚ˆã‚Šãƒ—ロジェクトãŒå£Šã‚Œãªã„ã‹ã©ã†ã‹ã¯ç¢ºèªã—ã¦ãã ã•ã„。

  • ノンブロッキング: high DOM ã®èª­ã¿è¾¼ã¿ã«æ™‚é–“ãŒã‹ã‹ã‚‹ã®ã‚’防ããŸã‚ã€CSS ファイルã¯ãƒŽãƒ³ãƒ–ロッキングã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

    <link rel="preload" href="global.min.css" as="style" onload="this.rel='stylesheet'">
    <noscript><link rel="stylesheet" href="global.min.css"></noscript>

    ç†ç”±:

    CSS ファイルã¯ã€ãƒšãƒ¼ã‚¸ã®èª­ã¿è¾¼ã¿ã‚’ブロックã—レンダリングをé…å»¶ã•ã›ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚preload を使用ã™ã‚‹ã¨ã€ãƒ–ラウザãŒãƒšãƒ¼ã‚¸ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を表示ã—å§‹ã‚ã‚‹å‰ã« CSS ファイルを読ã¿è¾¼ã¾ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

    方法:

    ⃠preload ã®å€¤ã‚’æŒã¤ rel 属性ã¨ã€as="style" ã‚’ <link> è¦ç´ ã«è¿½åŠ ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

  • CSS クラスã®é•·ã•: low クラスã®é•·ã•ã¯ï¼ˆæœ€çµ‚çš„ã«ï¼‰HTML ファイル㨠CSS ファイルã«ï¼ˆã‚ãšã‹ãªï¼‰å½±éŸ¿ã‚’与ãˆã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚

    ç†ç”±:

    パフォーマンスã¸ã®å½±éŸ¿ã‚‚è­°è«–ã®ä½™åœ°ãŒã‚りã¾ã™ãŒã€ãƒ—ロジェクトã®å‘½åè¦å‰‡ã‚’決ã‚ã¦ãŠãã¨ã€ã‚¹ã‚¿ã‚¤ãƒ«ã‚·ãƒ¼ãƒˆã®ä¿å®ˆæ€§ã«å¤§ããªå½±éŸ¿ã‚’与ãˆã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚BEM を使用ã™ã‚‹å ´åˆã€å¿…è¦ä»¥ä¸Šã®æ–‡å­—ãŒã‚¯ãƒ©ã‚¹ã«å«ã¾ã‚Œã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚åå‰ã‚„åå‰ç©ºé–“ã‚’ã—ã£ã‹ã‚Šã¨è€ƒãˆé¸æŠžã™ã‚‹ã“ã¨ã¯å¸¸ã«é‡è¦ã§ã™ã€‚

    方法:

    文字数ã«åˆ¶é™ã‚’設定ã™ã‚‹ã“ã¨ã¯ä¸€éƒ¨ã®äººã«ã¨ã£ã¦ã¯èˆˆå‘³æ·±ã„ã“ã¨ã§ã™ãŒã€ã‚¦ã‚§ãƒ–サイトをコンãƒãƒ¼ãƒãƒ³ãƒˆã«åˆ†å‰²ã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒ©ã‚¹ï¼ˆãŠã‚ˆã³å®£è¨€ï¼‰ã®æ•°ã¨é•·ã•を減らã™ã“ã¨ãŒã§ãã¾ã™ã€‚

  • 未使用㮠CSS: medium 未使用㮠CSS セレクタを削除ã™ã‚‹ã€‚

    ç†ç”±:

    未使用㮠CSS セレクタを削除ã™ã‚‹ã¨ã€ãƒ•ァイルサイズãŒå‰Šæ¸›ã§ãアセットã®èª­ã¿è¾¼ã¿ã‚‚æ—©ããªã‚Šã¾ã™ã€‚

    方法:

    âƒ âš ï¸ ä½¿ç”¨ã™ã‚‹ CSS フレームワークã«ãƒªã‚»ãƒƒãƒˆ CSS/ノーマライズ CSS ã®ã‚³ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¦ã„ãªã„ã‹ã©ã†ã‹ã‚’常ã«ç¢ºèªã—ã¦ãã ã•ã„。リセット CSS/ノーマライズ CSS ファイルã«è¨˜è¼‰ã•れã¦ã„ã‚‹å…¨ã¦ã®ã‚³ãƒ¼ãƒ‰ã‚’å¿…è¦ã¨ã—ãªã„å ´åˆãŒã‚りã¾ã™ã€‚

  • クリティカル CSS: high クリティカル CSS(ã¾ãŸã¯ above the fold)ã¨ã¯ã€ãƒ•ァーストビューã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã«ä½¿ç”¨ã•れるã™ã¹ã¦ã® CSS ã§ã™ã€‚主è¦ãª CSS ã®èª­ã¿è¾¼ã¿å‰ã«ã“れを <style></style> ã‚¿ã‚°ã«ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–(å¯èƒ½ãªé™ã‚Šåœ§ç¸®ï¼‰ã—ã¦è¨˜è¼‰ã—ã¾ã™ã€‚

    ç†ç”±:

    インライン化ã—ãŸã‚¯ãƒªãƒ†ã‚£ã‚«ãƒ« CSS を使用ã™ã‚‹ã¨ã€Web ページã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã‚’高速化ã—ã€ã‚µãƒ¼ãƒã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆå›žæ•°ã‚’減らã™ã“ã¨ãŒã§ãã¾ã™ã€‚

    方法:

    オンラインツールã€ã¾ãŸã¯ Addy Osmani ãŒé–‹ç™ºã—ãŸã‚ˆã†ãªãƒ—ラグインを使用ã—ã¦ã‚¯ãƒªãƒ†ã‚£ã‚«ãƒ« CSS を生æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

  • 埋ã‚込㿠ã¾ãŸã¯ インライン CSS: high <body> 内ã§åŸ‹ã‚込㿠CSSã€ã¾ãŸã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ CSS を使ã†ã®ã¯é¿ã‘ã¾ã—ょã†ã€‚ (HTTP/2 ã§ã¯ç„¡åŠ¹ï¼‰

    ç†ç”±:

    最åˆã®ç†ç”±ã®ä¸€ã¤ã¯ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„をデザインã‹ã‚‰åˆ†é›¢ ã™ã‚‹ã“ã¨ãŒã‚°ãƒƒãƒ‰ãƒ—ラクティスã ã‹ã‚‰ã§ã™ã€‚コードã®ä¿å®ˆæ€§ãŒå‘上ã—ã€ã‚µã‚¤ãƒˆã®ã‚¢ã‚¯ã‚»ã‚·ãƒ“リティもå‘上ã—ã¾ã™ã€‚パフォーマンスã«é–¢ã—ã¦è¨€ã†ã¨ã€HTML ページã®ãƒ•ァイルサイズã¨èª­ã¿è¾¼ã¿æ™‚間を短縮ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

    方法:

    常ã«å¤–部スタイルシートを使用ã™ã‚‹ã‹ã€<head> ã« CSS を埋ã‚è¾¼ã¿ã¾ã™ã€‚(他㮠CSS パフォーマンスルールã«å¾“ã„ã¾ã™ï¼‰

  • スタイルシートã®è¤‡é›‘ã•を分æžã™ã‚‹: high スタイルシートを分æžã™ã‚‹ã¨ã€CSS セレクタã®å•題ã€å†—長性ã€é‡è¤‡ã‚’見ã¤ã‘ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚

    ç†ç”±:

    CSS ã«å†—長性や検証エラーãŒã‚ã‚‹å ´åˆã¯ã€CSS ファイルを分æžã—ã“れらã®è¤‡é›‘ãªã‚³ãƒ¼ãƒ‰ã‚’削除ã™ã‚‹ã¨ã€CSS ファイルã®èª­ã¿è¾¼ã¿ãŒé«˜é€ŸåŒ–ã•れã¾ã™ã€‚(ブラウザãŒé«˜é€Ÿã«èª­ã¿å–ã‚‹ãŸã‚ã§ã™ï¼‰

    方法:

    CSS プリプロセッサを使用ã—ã¦ã€CSS ã‚’æ•´ç†ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚下記ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ„ールã®ä¸€éƒ¨ã¯ã‚³ãƒ¼ãƒ‰ã®åˆ†æžã¨ä¿®æ­£ã«ã‚‚役立ã¡ã¾ã™ã€‚

⬆ ãƒˆãƒƒãƒ—ã«æˆ»ã‚‹

Fonts

fonts

  • ウェブフォント フォーマット: medium ウェブプロジェクトã¾ãŸã¯ã‚¢ãƒ—リケーション㧠WOFF2 を使用ã—ã¦ã„ã¾ã™ã€‚

    ç†ç”±:

    Google ã«ã‚ˆã‚‹ã¨ã€WOFF 2.0 ウェブフォントã®åœ§ç¸®ãƒ•ォーマットã¯ã€WOFF 1.0 よりも平å‡30%å‘上ã—ã¾ã™ã€‚ãã®å ´åˆã€WOFF 2.0ã€WOFF 1.0 をフォールãƒãƒƒã‚¯ãŠã‚ˆã³ TTF ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚

    方法:

    æ–°ã—ã„フォントを購入ã™ã‚‹å‰ã«ã€ãƒ—ロãƒã‚¤ãƒ€ãŒ WOFF2 フォーマットをæä¾›ã—ã¦ã„ã‚‹ã‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。フリーフォントを使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€å¸¸ã« Font Squirrel を使用ã—ã¦å¿…è¦ãªã™ã¹ã¦ã®ãƒ•ォーマットを生æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

  • フォントをより速ã読ã¿è¾¼ã‚€ã«ã¯ã€preconnect を使用ã—ã¾ã™: medium

    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

    ç†ç”±:

    ウェブサイトã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã‚‰ã€ãƒ‡ãƒã‚¤ã‚¹ã¯ãã®ã‚µã‚¤ãƒˆãŒã©ã“ã«ã‚りã€ã©ã®ã‚µãƒ¼ãƒã«æŽ¥ç¶šã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹æ¤œå‡ºã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ブラウザã¯ã€ãƒªã‚½ãƒ¼ã‚¹ï¼ˆãƒ•ォントã€CSS ファイル...)をå–å¾—ã™ã‚‹å‰ã«ã€DNS サーãƒã«æŽ¥ç¶šã—ã€ãƒ«ãƒƒã‚¯ã‚¢ãƒƒãƒ—ãŒå®Œäº†ã™ã‚‹ã®ã‚’å¾…ã¤å¿…è¦ãŒã‚りã¾ã—ãŸã€‚プリフェッãƒã¨ãƒ—リコãƒã‚¯ãƒˆã‚’使用ã™ã‚‹ã¨ã€ãƒ–ラウザ㯠DNS 情報を検索ã—ã¦ã€ãƒ•ォントファイルをホストã—ã¦ã„るサーãƒã¸ã® TCP 接続ã®ç¢ºç«‹ã‚’é–‹å§‹ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ–ラウザãŒãƒ•ォント情報をå«ã‚€ CSS ファイルを解æžã—ã€ã‚µãƒ¼ãƒã‹ã‚‰ãƒ•ã‚©ãƒ³ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¦æ±‚ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã‚’検出ã™ã‚‹ã¾ã§ã«ã€DNS 情報ãŒäº‹å‰ã«è§£æ±ºã•れã€ã‚µãƒ¼ãƒã¸ã®ã‚ªãƒ¼ãƒ—ン接続ãŒã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ールã«ç”¨æ„ã•れã¦ã„ã‚‹ãŸã‚ã€ãƒ‘フォーマンスãŒå‘上ã—ã¾ã™ã€‚

    方法:

    ⃠ウェブフォントをプリフェッãƒã™ã‚‹å‰ã«ã€webpagetest を使ã£ã¦ã‚¦ã‚§ãƒ–サイトを評価ã—ã¾ã—ょã†
    ⃠é’緑色㮠DNS ルックアップを探ã—ã¦ã€è¦æ±‚ã•れãŸãƒ›ã‚¹ãƒˆã‚’メモã—ã¦ãã ã•ã„
    ⃠ウェブフォントを <head> ã®ä¸­ã§ãƒ—リフェッãƒã—ã€æœ€çµ‚çš„ã«ã¯ãƒ—リフェッãƒã™ã‚‹å¿…è¦ãŒã‚るホストåも追加ã—ã¦ãã ã•ã„

  • ウェブフォント サイズ: medium ウェブフォントã®ã‚µã‚¤ã‚ºã¯ 300kb 以下ã§ã™ï¼ˆå«ã¾ã‚Œã¦ã„ã‚‹ã™ã¹ã¦ã®ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ï¼‰

  • フラッシュã¾ãŸã¯ä¸å¯è¦–テキストã®é˜²æ­¢: medium ウェブフォントãŒèª­ã¿è¾¼ã¾ã‚Œã‚‹ã¾ã§ã¯ã€ãƒ†ã‚­ã‚¹ãƒˆã‚’é€éŽã•ã›ãªã„よã†ã«ã—ã¾ã™

⬆ ãƒˆãƒƒãƒ—ã«æˆ»ã‚‹

Images

images

  • ベクター画åƒã‹ãƒ©ã‚¹ã‚¿ãƒ¼/ビットマップを使用: medium ビットマップ画åƒã‚ˆã‚Šã‚‚ベクター画åƒã‚’使用ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ï¼ˆå¯èƒ½ãªå ´åˆï¼‰ã€‚

    ç†ç”±:

    ãƒ™ã‚¯ã‚¿ãƒ¼ç”»åƒ (SVG) ã¯ã‚µã‚¤ã‚ºãŒå°ã•ããªã‚‹å‚¾å‘ãŒã‚りã€ãƒ¬ã‚¹ãƒãƒ³ã‚·ãƒ–ã§ã‚¹ã‚±ãƒ¼ãƒ«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã“れらã®ç”»åƒã¯ã€CSS を使ã£ã¦ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã—ãŸã‚Šå¤‰æ›´ã—ãŸã‚Šã§ãã¾ã™ã€‚

  • ç”»åƒã®å¤§ãã•: medium レンダリング時ã®ç”»åƒã‚µã‚¤ã‚ºãŒã‚ã‹ã£ã¦ã„ã‚‹å ´åˆã¯ã€<img> ã‚¿ã‚°ã« width 㨠height ã®å±žæ€§ã‚’設定ã—ã¾ã™ã€‚

    ç†ç”±:

    ã‚らã‹ã˜ã‚ç”»åƒã«é«˜ã•ã¨å¹…ãŒè¨­å®šã•れã¦ã„れã°ã€ãƒšãƒ¼ã‚¸ã‚’ローディングã™ã‚‹æ™‚ã«ç”»åƒè¡¨ç¤ºã«å¿…è¦ãªã‚¹ãƒšãƒ¼ã‚¹ãŒç¢ºä¿ã•れã¾ã™ãŒã€ã‚‚ã—ã“れらã®å±žæ€§ãŒè¨­å®šã•れã¦ã„ãªã‘れã°ã€ãƒ–ラウザã¯ç”»åƒã®ã‚µã‚¤ã‚ºã‚’èªè­˜ã§ããšé©åˆ‡ãªã‚¹ãƒšãƒ¼ã‚¹ã‚’確ä¿ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ã“れã«ã‚ˆã‚Šã€ãƒšãƒ¼ã‚¸ï¼ˆç”»åƒãƒ•ァイル)ã®ãƒ­ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ä¸­ã«ã€ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãŒå¤‰æ›´ã•れるã¨ã„ã†å½±éŸ¿ãŒå‡ºã¦ã—ã¾ã„ã¾ã™ã€‚

  • Base64 ç”»åƒã®ä½¿ç”¨ã‚’é¿ã‘ã‚‹: medium å°ã•ãªç”»åƒã§ã‚れ㰠base64 ã«å¤‰æ›ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ãŒã€å®Ÿéš›ã“れã¯ãƒ™ã‚¹ãƒˆãƒ—ラクティスã§ã¯ã‚りã¾ã›ã‚“。

  • Lazy loading(é…延読ã¿è¾¼ã¿ï¼‰: medium オフスクリーン画åƒï¼ˆãƒ–ラウザã«åˆæœŸè¡¨ç¤ºã•れãªã„ç”»åƒï¼‰ã¯é…延ロードã—ã¾ã™ï¼ˆnoscript フォールãƒãƒƒã‚¯ã¯å¸¸ã«æä¾›ã•れã¾ã™ï¼‰ã€‚

    ç†ç”±:

    表示画é¢ã®å¿œç­”時間を短縮ã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒå¿…è¦ã¨ã—ãªã„ä¸è¦ãªç”»åƒã®èª­ã¿è¾¼ã¿ã‚’回é¿ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

    方法:

    ⃠Lighthouse を使用ã—ã¦ã€ã‚ªãƒ•ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ç”»åƒ ã®æ•°ã‚’特定ã—ã¾ã™ã€‚
    ⃠以下ã®ã‚ˆã†ãª JavaScript プラグインを使用ã—ã¦ã€ç”»åƒã®é…延読ã¿è¾¼ã¿ã‚’行ã„ã¾ã™ã€‚å¿…ãšã‚ªãƒ•スクリーン画åƒã®ã¿ã‚’é…延読ã¿è¾¼ã¿å¯¾è±¡ã«ã—ã¦ãã ã•ã„。
    ⃠ã¾ãŸã€ãƒžã‚¦ã‚¹ã‚ªãƒ¼ãƒãƒ¼æ™‚やユーザーæ“作時ã«è¡¨ç¤ºã•れる代替画åƒã‚‚é…延読ã¿è¾¼ã¿ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。

  • レスãƒãƒ³ã‚·ãƒ–ç”»åƒ: medium ディスプレイサイズã«è¿‘ã„ç”»åƒã‚’利用ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。

    ç†ç”±:

    ç”»é¢ãŒå°ã•ã„デãƒã‚¤ã‚¹ã§ã¯ã€ãƒ“ューãƒãƒ¼ãƒˆã‚ˆã‚Šã‚‚大ããªç”»åƒã‚’å¿…è¦ã¨ã—ã¾ã›ã‚“。1ã¤ã®ç”»åƒã‚’ãれãžã‚Œã®ç•°ãªã‚‹ã‚µã‚¤ã‚ºã§è¤‡æ•°æžšç”¨æ„ã—ã¦ãŠãã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚

    方法:

    ⃠ターゲットã¨ã™ã‚‹ãƒ‡ãƒã‚¤ã‚¹ç”¨ã«ç•°ãªã‚‹ç”»åƒã‚µã‚¤ã‚ºã‚’作æˆã—ã¾ã™ã€‚
    ⃠srcset 属性や picture タグを使用ã—ã¦ã€å„ç”»åƒã®è¤‡æ•°ã®ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã‚’é…ä¿¡ã—ã¾ã™ã€‚

⬆ ãƒˆãƒƒãƒ—ã«æˆ»ã‚‹

JavaScript

javascript

  • JS 圧縮: high å…¨ã¦ã® JavaScript ファイルãŒåœ§ç¸®ã•れã€ã‚³ãƒ¡ãƒ³ãƒˆã€ç©ºç™½ã€ãŠã‚ˆã³æ”¹è¡ŒãŒãƒ—ロダクションファイルã‹ã‚‰å‰Šé™¤ã•れã¾ã™ (HTTP/2を使用ã—ã¦ã„ã‚‹å ´åˆã§ã‚‚有効ã§ã™ï¼‰ã€‚

    ç†ç”±:

    ä¸è¦ãªã‚¹ãƒšãƒ¼ã‚¹ã€ã‚³ãƒ¡ãƒ³ãƒˆã€ãƒ–レークをã™ã¹ã¦å‰Šé™¤ã™ã‚‹ã¨ã€JavaScript ファイルã®ã‚µã‚¤ã‚ºãŒå°ã•ããªã‚Šã€ã‚µã‚¤ãƒˆã®ãƒšãƒ¼ã‚¸ã®èª­ã¿è¾¼ã¿æ™‚é–“ãŒçŸ­ç¸®ã•れã€ãƒ¦ãƒ¼ã‚¶ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒæ˜Žã‚‰ã‹ã«è»½ããªã‚Šã¾ã™ã€‚

    方法:

    ⃠以下ã«ç¤ºã™ãƒ„ールを使用ã—ã¦ã€ãƒ“ルドã¾ãŸã¯ãƒ‡ãƒ—ロイメントã®å‰ã‹æœ€ä¸­ã«ãƒ•ァイルを自動的ã«åœ§ç¸®ã—ã¾ã™ã€‚

  • JavaScriptを内部ã«ã¯ç„¡è¨˜è¼‰ : medium (ウェブサイトã§ã®ã¿æœ‰åйã§ã™ï¼‰ body 内部ã«è¤‡æ•°ã® JavaScript コードを埋ã‚込むã“ã¨ã¯é¿ã‘ã¦ãã ã•ã„。JavaScript コードを外部ファイル内ã«ã€æœ€çµ‚çš„ã«ã¯ <head> ã€ã¾ãŸã¯ãƒšãƒ¼ã‚¸ã®æœ€å¾Œï¼ˆ</body> ã®å‰ï¼‰ã§å†ã‚°ãƒ«ãƒ¼ãƒ—化ã—ã¾ã™ã€‚

    ç†ç”±:

    JavaScript ã®åŸ‹ã‚è¾¼ã¿ã‚³ãƒ¼ãƒ‰ã‚’直接 <body> ã«é…ç½®ã™ã‚‹ã¨ã€DOM ã®æ§‹ç¯‰ä¸­ã«ãƒšãƒ¼ã‚¸ãŒèª­ã¿è¾¼ã¾ã‚Œã‚‹ãŸã‚ã€ãƒšãƒ¼ã‚¸ã®é€Ÿåº¦ãŒä½Žä¸‹ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ 最é©ãªã‚ªãƒ—ションã¯ã€DOM ã®ãƒ–ロックを回é¿ã™ã‚‹ãŸã‚ã«ã€async ã¾ãŸã¯ defer ã§å¤–部ファイルを使用ã™ã‚‹ã“ã¨ã§ã™ã€‚ 別ã®ã‚ªãƒ—ションã¯ã€<head> 内ã«ã„ãã¤ã‹ã®ã‚¹ã‚¯ãƒªãƒ—トをé…ç½®ã™ã‚‹ã“ã¨ã§ã™ã€‚<head> ã«é…ç½®ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—トã¯ã€ã»ã¨ã‚“ã©ã®å ´åˆã€DOM ãŒãƒ¡ã‚¤ãƒ³å‡¦ç†ã«åˆ°é”ã™ã‚‹å‰ã«ãƒ­ãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒã‚る分æžã‚³ãƒ¼ãƒ‰ã¾ãŸã¯å°ã•ãªã‚¹ã‚¯ãƒªãƒ—トã§ã™ã€‚

    方法:

    ã™ã¹ã¦ã®ãƒ•ァイル㌠async ã¾ãŸã¯ defer を使用ã—ã¦ãƒ­ãƒ¼ãƒ‰ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã€<head> ã«æŒ¿å…¥ã™ã‚‹å¿…è¦ãŒã‚るコードã‹ã©ã†ã‹è¦‹æ¥µã‚ã¾ã—ょã†ã€‚

  • ノンブロッキング JavaScript: high JavaScript ファイルã¯ã€async を使用ã—ã¦éžåŒæœŸã§ãƒ­ãƒ¼ãƒ‰ã•れるã‹ã€defer 属性を使用ã—ã¦é…延ロードã•れã¾ã™ã€‚

    <!-- Defer 属性 -->
    <script defer src="foo.js"></script>
    
    <!-- Async 属性 -->
    <script async src="foo.js"></script>

    ç†ç”±:

    JavaScript ã¯ã€é€šå¸¸ã® HTML ドキュメント解æžã‚’ブロックã™ã‚‹ãŸã‚ã€ãƒ‘ーサ㌠<script> ã‚¿ã‚°ã«åˆ°é”ã™ã‚‹ã¨ï¼ˆç‰¹ã« <head> 内ã«ã‚る)ã€ãƒ•ェッãƒã¨å®Ÿè¡Œã‚’åœæ­¢ã—ã¾ã™ã€‚スクリプトをページã®ä¸Šéƒ¨ã«é…ç½®ã™ã‚‹å ´åˆã¯ async ã¾ãŸã¯ defer を追加ã™ã‚‹ã“ã¨ã‚’å¼·ãæŽ¨å¥¨ã—ã¾ã™ãŒã€</ body> ã‚¿ã‚°ã®ç›´å‰ã§ã¯ã‚ã¾ã‚ŠåŠ¹æžœãŒã‚りã¾ã›ã‚“。ãŸã ã—ã€ã“れらã®å±žæ€§ã‚’常時使用ã—ã€ãƒ‘フォーマンスã®å•題を回é¿ã™ã‚‹ã“ã¨ãŒæœ›ã¾ã—ã„ã§ã™ã€‚

    方法:

    ⃠スクリプトタグã®å±žæ€§ã¨ã—ã¦ã€async(スクリプトãŒä»–ã®ã‚¹ã‚¯ãƒªãƒ—トã«ä¾å­˜ã—ã¦ã„ãªã„å ´åˆï¼‰ã¾ãŸã¯ defer(スクリプトãŒä»–ã®ã‚¹ã‚¯ãƒªãƒ—トã«ä¾å­˜ã€ã¾ãŸã¯éžåŒæœŸã‚¹ã‚¯ãƒªãƒ—トã«ä¾å­˜ã—ã¦ã„ã‚‹å ´åˆï¼‰ã‚’追加ã—ã¾ã™ã€‚
    ⃠å°ã•ãªã‚¹ã‚¯ãƒªãƒ—トã¯ã€éžåŒæœŸã‚¹ã‚¯ãƒªãƒ—トã®ä¸Šã«ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¹ã‚¯ãƒªãƒ—トã§é…ç½®ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚

  • 最é©åŒ–ãŠã‚ˆã³ã‚¢ãƒƒãƒ—デートã•れ㟠JS ライブラリ: medium プロジェクトã§ä½¿ç”¨ã•れる全ã¦ã® JavaScript ライブラリãŒå¿…è¦ã§ã‚ã£ã¦ï¼ˆå˜ç´”ãªæ©Ÿèƒ½ã«ã¤ã„ã¦ã¯ãƒãƒ‹ãƒ© JavaScript を推奨)ã€JavaScript ライブラリを最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã‚¢ãƒƒãƒ—デートã—ã€ä¸å¿…è¦ãªãƒ¡ã‚½ãƒƒãƒ‰ã§ JavaScript ã‚’ã†ã‚ã¤ãã•ãªã„ã§ãã ã•ã„。

    ç†ç”±:

    ã»ã¨ã‚“ã©ã®å ´åˆã€æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯æœ€é©åŒ–ã¨ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¿®æ­£ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚最é©åŒ–ã•れãŸã‚³ãƒ¼ãƒ‰ã§ãƒ—ロジェクトを高速化ã—ã€å¤ã„プラグインを使ã†ã“ã¨ãªãã€ã‚¦ã‚§ãƒ–サイトã¾ãŸã¯ã‚¢ãƒ—リã®é€Ÿåº¦ã‚’è½ã¨ã•ãªã„よã†ã«ã—ã¦ãã ã•ã„。

    方法:

    プロジェクト㧠NPM パッケージを使用ã—ã¦ã„ã‚‹å ´åˆã€npm-check ã¯ã€ãƒ©ã‚¤ãƒ–ラリをアップグレードï¼ã‚¢ãƒƒãƒ—デートã™ã‚‹ãŸã‚ã®éžå¸¸ã«èˆˆå‘³æ·±ã„ライブラリã§ã™ã€‚ Greenkeeper ã¯ã€ä¾å­˜é–¢ä¿‚ã‚’è‡ªå‹•çš„ã«æŽ¢ã—ã€æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒãƒªãƒªãƒ¼ã‚¹ã•れる度ã«ã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆã‚’ææ¡ˆã—ã¾ã™ã€‚

⬆ ãƒˆãƒƒãƒ—ã«æˆ»ã‚‹

サーãƒ

![サーãƒã‚µã‚¤ãƒ‰]

  • ウェブサイト㌠HTTPS を使用ã—ã¦ã„ã‚‹ã“ã¨: high

    ç†ç”±:

    HTTPS ã¯ã€ e コマースウェブサイトã ã‘ã§ã¯ãªãã€ãƒ‡ãƒ¼ã‚¿ã‚’やりã¨ã‚Šã™ã‚‹å…¨ã¦ã®ã‚¦ã‚§ãƒ–サイト用ã§ã™ã€‚データã¨ã¯ã€ãƒ¦ãƒ¼ã‚¶ãŒå…±æœ‰ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã€ã¾ãŸã¯å¤–部エンティティã¨å…±æœ‰ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã§ã™ã€‚ä»Šæ™‚ã®æœ€æ–°ãƒ–ラウザã¯å®‰å…¨ã§ãªã„ã‚µã‚¤ãƒˆã®æ©Ÿèƒ½ã‚’制é™ã—ã¦ã„ã¾ã™ã€‚例ãˆã°ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒ HTTPS を使用ã—ã¦ã„ãªã„å ´åˆã€ä½ç½®æƒ…å ±ã€ãƒ—ッシュ通知ã€ãŠã‚ˆã³ Service Worker ã¯æ©Ÿèƒ½ã—ã¾ã›ã‚“。ã¾ãŸã€ç¾åœ¨ã¯ SSL 証明書を使用ã—ãŸãƒ—ロジェクトã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ãŒã€ä»¥å‰ã‚ˆã‚Šã‚‚ã¯ã‚‹ã‹ã«ç°¡å˜ã«ãªã‚Šã¾ã—ãŸã€‚(ãã—ã¦ã€ Let's Encrypt ã®ãŠã‹ã’ã§ç„¡æ–™ã§ã™ã€‚)

  • ãƒšãƒ¼ã‚¸å®¹é‡ < 1500 KB (ç†æƒ³çš„ã«ã¯ < 500 KB): high ページã¨ãƒªã‚½ãƒ¼ã‚¹ã®ã‚µã‚¤ã‚ºã‚’ã§ãã‚‹ã ã‘減らã™ã€‚

    ç†ç”±:

    500 KB 未満を目標ã«ã™ã‚‹ã®ãŒç†æƒ³ã§ã™ãŒã€ Web ã®çŠ¶æ…‹ã§ã¯ã€ãƒšãƒ¼ã‚¸å®¹é‡ã®ä¸­å¤®å€¤ãŒç´„ 1500 KB (モãƒã‚¤ãƒ«ã§ã‚‚)ã§ã‚ã‚‹ã“ã¨ãŒç¤ºã•れã¦ã„ã¾ã™ã€‚ターゲットユーザã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šã€ãƒ‡ãƒã‚¤ã‚¹ã«å¿œã˜ã¦ã€å¯èƒ½ãªé™ã‚Šç·ã‚­ãƒ­ãƒã‚¤ãƒˆæ•°ã‚’減らã™ã“ã¨ã§ã€å¯èƒ½ãªé™ã‚Šæœ€é«˜ã®ãƒ¦ãƒ¼ã‚¶ä½“験をæä¾›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

    方法:

    ⃠フロントエンドパフォーマンスãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆå†…ã®å…¨ã¦ã®ãƒ«ãƒ¼ãƒ«ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ã¨ã‚³ãƒ¼ãƒ‰ã‚’å¯èƒ½ãªé™ã‚Šå‰Šæ¸›ã™ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚

  • ページ読ã¿è¾¼ã¿æ™‚é–“ < 3 ç§’: high ページã®èª­ã¿è¾¼ã¿æ™‚é–“ã‚’å¯èƒ½ãªé™ã‚ŠçŸ­ç¸®ã—ã¦ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ç´ æ—©ãユーザã«é…ä¿¡ã™ã‚‹ã€‚

    ç†ç”±:

    ウェブサイトやアプリãŒé«˜é€Ÿã§ã‚れã°ã‚ã‚‹ã»ã©ã€é›¢è„±ã‚’増加ã™ã‚‹å¯èƒ½æ€§ã‚’減らã—ã€ãƒ¦ãƒ¼ã‚¶ã‚„å°†æ¥ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’失ã†å¯èƒ½æ€§ã‚’減らã—ã¾ã™ã€‚主題ã«é–¢ã™ã‚‹å分ãªèª¿æŸ»ã¯ã€ã“ã®ç‚¹ã‚’証明ã—ã¾ã™ã€‚

    方法:

    Page Speed Insight ã‚„ WebPageTest ãªã©ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ„ールを使用ã—ã¦ã€ä½•ãŒé…ããªã‚‹ã‹ã‚’分æžã—ã€èª­ã¿è¾¼ã¿æ™‚間を短縮ã™ã‚‹ãŸã‚ã«ã€ãƒ•ロントエンドパフォーマンスãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆã‚’利用ã—ã¾ã™ã€‚

  • 最åˆã®æƒ…報をå—ä¿¡ã™ã‚‹å¾…ã¡æ™‚é–“ < 1.3 ç§’: high データをå—ä¿¡ã™ã‚‹å‰ã«ã€ãƒ–ラウザãŒå¾…機ã™ã‚‹æ™‚é–“ã‚’ã§ãã‚‹é™ã‚Šæ¸›ã‚‰ã—ã¾ã™ã€‚

  • クッキーサイズ: medium クッキーを利用ã—ã¦ã„ã‚‹ã®ã§ã‚れã°ã€å„クッキーãŒ4096ãƒã‚¤ãƒˆã‚’è¶…ãˆãªã„よã†ã«ã—ã€ãƒ‰ãƒ¡ã‚¤ãƒ³æ¯Žã«20ã‚’è¶…ãˆã‚‹ã‚¯ãƒƒã‚­ãƒ¼ãŒç„¡ã„よã†ã«ã—ã¦ãã ã•ã„。

    ç†ç”±:

    クッキーã¯ã€ã‚¦ã‚§ãƒ–サーãƒã¨ãƒ–ラウザ間㧠HTTP ヘッダã§ã‚„りã¨ã‚Šã•れã¾ã™ã€‚ユーザã®å¿œç­”時間ã¸ã®å½±éŸ¿ã‚’最å°é™ã«æŠ‘ãˆã‚‹ãŸã‚ã«ã€ã‚¯ãƒƒã‚­ãƒ¼ã®ã‚µã‚¤ã‚ºã‚’ã§ãã‚‹é™ã‚Šå°ã•ãã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚

    方法:

    ä¸è¦ãªã‚¯ãƒƒã‚­ãƒ¼ã‚’排除ã—ã¾ã™ã€‚

  • HTTP ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®æœ€å°åŒ–: high リクエストã•れã¦ã„ã‚‹å…¨ã¦ã®ãƒ•ァイルãŒã€ã‚¦ã‚§ãƒ–サイトã¾ãŸã¯ã‚¢ãƒ—リケーションã«ä¸å¯æ¬ ã§ã‚ã‚‹ã“ã¨ã‚’常ã«ç¢ºèªã—ã¦ãã ã•ã„。
  • CDN を使用ã—ã¦ã‚¢ã‚»ãƒƒãƒˆã‚’é…ä¿¡: medium CDN を利用ã—ã¦ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„をより速ã世界中ã«é…ä¿¡ã—ã¾ã™ã€‚
  • åŒã˜ãƒ—ロトコルã‹ã‚‰ãƒ•ァイルをæä¾›: high 例ãˆã°ã€ HTTPS を使用ã—ã¦ã„るウェブサイトã§ã€ HTTP を使用ã—ãŸã‚½ãƒ¼ã‚¹ã‹ã‚‰ãƒ•ァイルをæä¾›ã™ã‚‹ã‚¦ã‚§ãƒ–サイトを作æˆã—ãªã„ã§ãã ã•ã„。ウェブサイト㌠HTTPS を使用ã—ã¦ã„ã‚‹å ´åˆã€å¤–部ファイルã¯åŒã˜ãƒ—ロトコルã‹ã‚‰å–å¾—ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

  • 到é”å¯èƒ½ãªãƒ•ァイルをæä¾›: high 到é”ä¸èƒ½ãªãƒ•ァイルã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é¿ã‘ã¾ã™ï¼ˆ404)。

  • HTTP キャッシュヘッダをé©åˆ‡ã«è¨­å®š: high HTTP ヘッダを設定ã—ã¦ã€ãƒ–ラウザã¨ã‚µãƒ¼ãƒé–“ã®å¾€å¾©ã‚³ã‚¹ãƒˆã‚’回é¿ã—ã¾ã™ã€‚
  • GZIP / Brotli åœ§ç¸®ã®æœ‰åŠ¹åŒ–: high GZIP ã‚„ Brotli ãªã©ã®åœ§ç¸®æ–¹æ³•を利用ã—ã¦ã€ JavaScript ファイルã®ã‚µã‚¤ã‚ºã‚’å°ã•ãã—ã¾ã™ã€‚ファイルã®ã‚µã‚¤ã‚ºã‚’å°ã•ãã™ã‚‹ã¨ã€ãƒ¦ãƒ¼ã‚¶ã¯ã‚¢ã‚»ãƒƒãƒˆã‚’より速ãダウンロードã§ãるよã†ã«ãªã‚Šã€ãƒ‘フォーマンスãŒå‘上ã—ã¾ã™ã€‚

⬆ ãƒˆãƒƒãƒ—ã«æˆ»ã‚‹


パフォーマンス㨠JS フレームワーク

Angular

React

Vue

パフォーマンス㨠CMS

WordPress

記事

推奨プラグイン


翻訳

Front-End Performance Checklist ã¯ã€ä»–言語ã§ã‚‚利用ã§ãるよã†ã«ã—ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™!è¿·ã‚ãšæŠ•ç¨¿ã—ã¦ãã ã•ã„!

貢献ã™ã‚‹

Issue やプルリクエストをオープンã—ã¦ã€å¤‰æ›´ã‚„è¿½åŠ ã‚’ææ¡ˆã—ã¦ãã ã•ã„。

サãƒãƒ¼ãƒˆ

質å•ã‚„ææ¡ˆãŒã‚れã°ã€é æ…®ãªã Discord ã‚„ Twitter を利用ã—ã¦ä¸‹ã•ã„:

著者

**Build with â¤ï¸ by David Dias

貢献者

ã“ã®ãƒ—ロジェクトã¯ã€ã”å”力ã„ãŸã ã„ãŸçš†æ§˜ã®ãŠã‹ã’ã§æˆã‚Šç«‹ã£ã¦ã„ã¾ã™ã€‚ [貢献ã™ã‚‹].

後æ´è€…

ã”æ”¯æ´ã„ãŸã ã„ãŸçš†æ§˜ã€ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸ! 🙠[後æ´è€…ã«ãªã‚‹]

スãƒãƒ³ã‚µãƒ¼

スãƒãƒ³ã‚µãƒ¼ã«ãªã£ã¦ã“ã®ãƒ—ロジェクトをサãƒãƒ¼ãƒˆã—ã¦ãã ã•ã„。スãƒãƒ³ã‚µãƒ¼ã®ãƒ­ã‚´ã¯ã€ã‚¦ã‚§ãƒ–サイトã¸ã®ãƒªãƒ³ã‚¯ã¨å…±ã«ã“ã“ã«è¡¨ç¤ºã•れã¾ã™ã€‚[スãƒãƒ³ã‚µãƒ¼ã«ãªã‚‹]

ライセンス

MIT

アイコンã¯ã™ã¹ã¦ Icons8 ã«ã‚ˆã£ã¦æä¾›ã•れã¦ã„ã¾ã™ã€‚

⬆ ãƒˆãƒƒãƒ—ã«æˆ»ã‚‹

About

🎮 The only Front-End Performance Checklist that runs faster than the others

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0