https://github.com/

页面构成与技术指标

正文

843

操作候选

31

图片

24

HTML

563 KB

文案

标题字数
61
摘要字数
186偏长
H1
1
H2
9

动作

主要入口

Sign up

表单
2/ 2 输入
站内链接
127
站外链接
15

安全与页面元信息

HTTPS
有
HSTS
有
CSP
有
nosniff
有
viewport
有
图标
有
JSON-LD
无
统计
无

构成

Tailwind

脚本
8 ext / 6 inline
Alt
17 missing
语言
en
第三方域
1

Lighthouse

移动端模拟 · 性能评分

44 / 100

2026-09-09 · 本次测试有警告,结果可能不完整。

查看详情

移动端模拟 · 实验室数据,非真实用户体验数据
2026-09-09T12:00:47.794Z · Lighthouse 13.4.1

本次测试有警告,结果可能不完整: The page loaded too slowly to finish within the time limit. Results may be incomplete.

性能44/ 100
可访问性100/ 100
最佳实践100/ 100
SEO100/ 100
LCP · 主要内容出现83,575 ms
CLS · 布局偏移0.000
TBT · 主线程阻塞434 ms
FCP · 首次内容绘制54,543 ms
SI · 视觉加载速度54,543 ms

分数会受服务器、网络和测试环境影响,独立于品味/转化评分。诊断保留 Lighthouse 原文。

Reduce initial server response time

Root document took 720 ms

Keep the server response time for the main document short because all other requests depend on it. Learn more about the Time to First Byte metric.

对应元素与资源
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://github.com/",
      "responseTime": 723
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "responseTime",
      "label": "Time Spent",
      "valueType": "timespanMs"
    }
  ],
  "overallSavingsMs": 623
}

Minimize main-thread work

6.7 s

Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. Learn how to minimize main-thread work

对应元素与资源
{
  "type": "table",
  "items": [
    {
      "group": "other",
      "duration": 2962.4639999999067,
      "groupLabel": "Other"
    },
    {
      "group": "styleLayout",
      "duration": 2400.216,
      "groupLabel": "Style & Layout"
    },
    {
      "group": "paintCompositeRender",
      "duration": 632.0839999999998,
      "groupLabel": "Rendering"
    },
    {
      "group": "scriptEvaluation",
      "duration": 451.72400000000016,
      "groupLabel": "Script Evaluation"
    },
    {
      "group": "parseHTML",
      "duration": 178.928,
      "groupLabel": "Parse HTML & CSS"
    },
    {
      "group": "garbageCollection",
      "duration": 14.839999999999986,
      "groupLabel": "Garbage Collection"
    },
    {
      "group": "scriptParseCompile",
      "duration": 12.959999999999997,
      "groupLabel": "Script Parsing & Compilation"
    }
  ],
  "headings": [
    {
      "key": "groupLabel",
      "label": "Category",
      "valueType": "text"
    },
    {
      "key": "duration",
      "label": "Time Spent",
      "valueType": "ms",
      "granularity": 1
    }
  ],
  "sortedBy": [
    "duration"
  ]
}

Image elements do not have explicit `width` and `height`

Set an explicit width and height on image elements to reduce layout shifts and improve CLS. Learn how to set image dimensions

对应元素与资源
{
  "type": "table",
  "items": [
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/g1XhuDG7foMyNWIEIpGJj/b40a790b854d0803704deb7905b1bd82/logo-duolingo-14477f9e54a6.svg",
      "node": {
        "lhId": "1-154-IMG",
        "path": "1,HTML,1,BODY,0,DIV,6,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,1,DIV,0,DIV,0,DIV,1,DIV,0,DIV,0,DIV,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img alt=\"Duolingo\" class=\"Primer_Brand__Image-module__Image___JSzlx\" height=\"32\" src=\"//images.ctfassets.net/8aevphvgewt8/g1XhuDG7foMyNWIEIpGJj/b40a790b854d0803…\" loading=\"lazy\">",
        "selector": "div.lp-SectionTemplate-customer > div.Primer_Brand__Pillar-module__Pillar___xLPAt > div.Primer_Brand__Pillar-module__Pillar__image___z4m11 > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "Duolingo",
        "boundingRect": {
          "top": 2705,
          "left": 24,
          "right": 160,
          "width": 136,
          "bottom": 2737,
          "height": 32
        }
      }
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/6Qr8Snm4JceoMFRJhapgFa/802ded1d2c486a9d0a4c073d9f8f38f4/logo-gartner-aa8c2e452b64.svg",
      "node": {
        "lhId": "1-155-IMG",
        "path": "1,HTML,1,BODY,0,DIV,6,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,1,DIV,0,DIV,0,DIV,1,DIV,1,DIV,0,DIV,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img alt=\"Gartner\" class=\"Primer_Brand__Image-module__Image___JSzlx\" height=\"32\" src=\"//images.ctfassets.net/8aevphvgewt8/6Qr8Snm4JceoMFRJhapgFa/802ded1d2c486a9…\" loading=\"lazy\">",
        "selector": "div.lp-SectionTemplate-customer > div.Primer_Brand__Pillar-module__Pillar___xLPAt > div.Primer_Brand__Pillar-module__Pillar__image___z4m11 > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "Gartner",
        "boundingRect": {
          "top": 2993,
          "left": 24,
          "right": 163,
          "width": 139,
          "bottom": 3025,
          "height": 32
        }
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "",
      "valueType": "node"
    },
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    }
  ]
}

Reduce unused CSS

Est savings of 202 KiB

Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. Learn how to reduce unused CSS.

对应元素与资源
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css",
      "totalBytes": 71554,
      "wastedBytes": 71554,
      "wastedPercent": 100
    },
    {
      "url": "https://github.githubassets.com/assets/global-adcabba7b5c5d221.css",
      "totalBytes": 40579,
      "wastedBytes": 40219,
      "wastedPercent": 99.11276599329436
    },
    {
      "url": "https://github.githubassets.com/assets/primer-react-css.c4086b4d579ad1e7.module.css",
      "totalBytes": 35121,
      "wastedBytes": 35121,
      "wastedPercent": 100
    },
    {
      "url": "https://github.githubassets.com/assets/github-552513ad07a183a1.css",
      "totalBytes": 21827,
      "wastedBytes": 21822,
      "wastedPercent": 99.97503685963694
    },
    {
      "url": "https://github.githubassets.com/assets/landing-pages.3335b8a95b85fbbc.module.css",
      "totalBytes": 20938,
      "wastedBytes": 20938,
      "wastedPercent": 100
    },
    {
      "url": "https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css",
      "totalBytes": 43113,
      "wastedBytes": 17448,
      "wastedPercent": 40.46957734636797
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes"
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "metricSavings": {
      "FCP": 1200,
      "LCP": 900
    }
  },
  "overallSavingsMs": 900,
  "overallSavingsBytes": 207102
}

Reduce unused JavaScript

Est savings of 448 KiB

Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.

对应元素与资源
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://github.githubassets.com/assets/primer-react-795d3d4785478ddd.js",
      "totalBytes": 120373,
      "wastedBytes": 120242,
      "wastedPercent": 99.89091784483753
    },
    {
      "url": "https://github.githubassets.com/assets/react-core-b3944113ce58176b.js",
      "totalBytes": 82391,
      "wastedBytes": 80624,
      "wastedPercent": 97.85522689286465
    },
    {
      "url": "https://github.githubassets.com/assets/mz-991b0be334f7b646.js",
      "totalBytes": 59818,
      "wastedBytes": 59759,
      "wastedPercent": 99.90205398553856
    },
    {
      "url": "https://github.githubassets.com/assets/react-lib-b5f08b83f94216f8.js",
      "totalBytes": 57421,
      "wastedBytes": 56372,
      "wastedPercent": 98.17231305417457
    },
    {
      "url": "https://github.githubassets.com/assets/behaviors-592edc94fa6fd58a.js",
      "totalBytes": 59819,
      "wastedBytes": 49562,
      "wastedPercent": 82.85359801488835
    },
    {
      "url": "https://github.githubassets.com/assets/nvz-46a994f1aea249d4.js",
      "totalBytes": 27910,
      "wastedBytes": 27875,
      "wastedPercent": 99.87355285387063
    },
    {
      "url": "https://github.githubassets.com/assets/j05-dce4d588268f0f7e.js",
      "totalBytes": 27043,
      "wastedBytes": 22117,
      "wastedPercent": 81.78506925814813
    },
    {
      "url": "https://github.githubassets.com/assets/3d8-52820d324301d734.js",
      "totalBytes": 21979,
      "wastedBytes": 21931,
      "wastedPercent": 99.7793784884598
    },
    {
      "url": "https://github.githubassets.com/assets/app-runtime-0b7903e63f63ea8d.js",
      "totalBytes": 29326,
      "wastedBytes": 20643,
      "wastedPercent": 70.39287547602278
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url",
      "subItemsHeading": {
        "key": "source",
        "valueType": "code"
      }
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "sourceBytes"
      }
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "sourceWastedBytes"
      }
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "metricSavings": {
      "FCP": 0,
      "LCP": 0
    }
  },
  "overallSavingsMs": 0,
  "overallSavingsBytes": 459125
}

Document request latency

Est savings of 620 ms

Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server response, and enabling text compression.

对应元素与资源
{
  "type": "checklist",
  "items": {
    "noRedirects": {
      "label": "Avoids redirects",
      "value": true
    },
    "usesCompression": {
      "label": "Applies text compression",
      "value": true
    },
    "serverResponseIsFast": {
      "label": "Server responded slowly (observed 723 ms)",
      "value": false
    }
  },
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 0,
    "redirectDuration": 0,
    "serverResponseTime": 723,
    "uncompressedResponseBytes": 0
  }
}

Forced reflow

A forced reflow occurs when JavaScript queries geometric properties (such as offsetWidth) after styles have been invalidated by a change to the DOM state. This can result in poor performance. Learn more about forced reflows and possible mitigations.

对应元素与资源
{
  "type": "list",
  "items": [
    {
      "type": "table",
      "items": [
        {
          "source": {
            "url": "https://github.githubassets.com/assets/6ny-c969fbae697a356f.js",
            "line": 16,
            "type": "source-location",
            "column": 20520,
            "urlProvider": "network"
          },
          "reflowTime": 99.779
        }
      ],
      "headings": [
        {
          "key": "source",
          "label": "Top function call",
          "valueType": "source-location"
        },
        {
          "key": "reflowTime",
          "label": "Total reflow time",
          "valueType": "ms",
          "granularity": 1
        }
      ]
    },
    {
      "type": "table",
      "items": [
        {
          "source": {
            "type": "text",
            "value": "[unattributed]"
          },
          "reflowTime": 425.429
        },
        {
          "source": {
            "url": "https://github.githubassets.com/assets/6ny-c969fbae697a356f.js",
            "line": 15,
            "type": "source-location",
            "column": 20578,
            "urlProvider": "network"
          },
          "reflowTime": 99.779
        }
      ],
      "headings": [
        {
          "key": "source",
          "label": "Source",
          "valueType": "source-location"
        },
        {
          "key": "reflowTime",
          "label": "Total reflow time",
          "valueType": "ms",
          "granularity": 1
        }
      ]
    }
  ]
}

Improve image delivery

Est savings of 662 KiB

Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about optimizing image size

对应元素与资源
{
  "type": "table",
  "items": [
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/1uXZYDy7dMcH9QwxuAU06F/1cb167cc60d725b8cf7089faf9a4ed06/accordion-2-730955545f07.webp",
      "node": {
        "lhId": "page-3-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,1,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        \n      …\" src=\"//images.ctfassets.net/8aevphvgewt8/1uXZYDy7dMcH9QwxuAU06F/1cb167cc60d725b…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3332,
          "left": -10,
          "right": 422,
          "width": 433,
          "bottom": 3677,
          "height": 345
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 197869
          }
        ]
      },
      "totalBytes": 213302,
      "wastedBytes": 197869
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/3xzVZaJhqo3B62R8NeHjX2/e37c81e4f26e9dac2aff1f23a0243087/accordion-3-52ca331d22ea.webp",
      "node": {
        "lhId": "page-4-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,2,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        \n      …\" src=\"//images.ctfassets.net/8aevphvgewt8/3xzVZaJhqo3B62R8NeHjX2/e37c81e4f26e9da…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3332,
          "left": -10,
          "right": 422,
          "width": 433,
          "bottom": 3677,
          "height": 345
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 177441
          }
        ]
      },
      "totalBytes": 191280,
      "wastedBytes": 177441
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/1Dt1ncaR6ZM4dQvknFzfBI/e5c2092be5bd53881622eced4fd37564/accordion-1-ce487d44c0bf.webp",
      "node": {
        "lhId": "page-5-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        lp-Sect…\" src=\"//images.ctfassets.net/8aevphvgewt8/1Dt1ncaR6ZM4dQvknFzfBI/e5c2092be5bd538…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3340,
          "left": 0,
          "right": 412,
          "width": 412,
          "bottom": 3669,
          "height": 329
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 154383
          }
        ]
      },
      "totalBytes": 166424,
      "wastedBytes": 154383
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/3cgNgdKFqflI27vyDh4Gpa/c459dc8690133e7663b8db2626cf2045/accordion-4-a26744b70ff7.webp",
      "node": {
        "lhId": "page-6-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,3,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        \n      …\" src=\"//images.ctfassets.net/8aevphvgewt8/3cgNgdKFqflI27vyDh4Gpa/c459dc8690133e7…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3332,
          "left": -10,
          "right": 422,
          "width": 433,
          "bottom": 3677,
          "height": 345
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 114052
          }
        ]
      },
      "totalBytes": 122948,
      "wastedBytes": 114052
    },
    {
      "url": "https://github.githubassets.com/assets/particles-170bd1fd231f4669.png",
      "node": {
        "lhId": "page-7-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,3,SECTION,0,DIV,0,DIV,0,DIV,1,DIV,0,DIV,1,IMG",
        "type": "node",
        "snippet": "<img class=\"particles\" src=\"https://github.githubassets.com/assets/particles-170bd1fd231f4669.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.lp-SectionHero > div.lp-SectionHero-glow > img.particles",
        "nodeLabel": "div.lp-SectionBlock-content > div.lp-SectionHero > div.lp-SectionHero-glow > img.particles",
        "boundingRect": {
          "top": 7644,
          "left": 124,
          "right": 288,
          "width": 165,
          "bottom": 7845,
          "height": 200
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1075x1307) for its displayed dimensions (165x200). Use responsive images to reduce the image download size.",
            "wastedBytes": 33699
          }
        ]
      },
      "totalBytes": 34510,
      "wastedBytes": 33699
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "",
      "valueType": "node"
    },
    {
      "key": "url",
      "label": "URL",
      "valueType": "url",
      "subItemsHeading": {
        "key": "reason",
        "valueType": "text"
      }
    },
    {
      "key": "totalBytes",
      "label": "Resource Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "wastedBytes",
        "valueType": "bytes"
      }
    }
  ],
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 677444
  }
}

LCP breakdown

Each subpart has specific improvement strategies. Ideally, most of the LCP time should be spent on loading the resources, not within delays.

对应元素与资源
{
  "type": "list",
  "items": [
    {
      "type": "table",
      "items": [
        {
          "label": "Time to first byte",
          "subpart": "timeToFirstByte",
          "duration": 963.157
        },
        {
          "label": "Element render delay",
          "subpart": "elementRenderDelay",
          "duration": 8988.733
        }
      ],
      "headings": [
        {
          "key": "label",
          "label": "Subpart",
          "valueType": "text"
        },
        {
          "key": "duration",
          "label": "Duration",
          "valueType": "ms"
        }
      ]
    },
    {
      "lhId": "page-0-H1",
      "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,0,SECTION,0,DIV,3,DIV,0,SECTION,0,DIV,0,DIV,0,DIV,0,H1",
      "type": "node",
      "snippet": "<h1 class=\"Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module…\" id=\"hero-section-brand-heading\">",
      "selector": "div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > div.Primer_Brand__Stack-module__Stack___kkChc > h1#hero-section-brand-heading",
      "nodeLabel": "The future of building happens together",
      "boundingRect": {
        "top": 267,
        "left": 48,
        "right": 364,
        "width": 316,
        "bottom": 405,
        "height": 138
      }
    }
  ]
}

Network dependency tree

Avoid chaining critical requests by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.

对应元素与资源
{
  "type": "list",
  "items": [
    {
      "type": "list-section",
      "value": {
        "type": "network-tree",
        "chains": {
          "CCB7DA1EE5DDE0A049D1D1B1B04B1BAA": {
            "url": "https://github.com/",
            "children": {
              "313143.4": {
                "url": "https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css",
                "children": {},
                "transferSize": 7516,
                "navStartToEndTime": 2504
              },
              "313143.5": {
                "url": "https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css",
                "children": {},
                "transferSize": 7411,
                "navStartToEndTime": 2688
              },
              "313143.6": {
                "url": "https://github.githubassets.com/assets/dark-79ad2ace604703b3.css",
                "children": {},
                "transferSize": 7514,
                "navStartToEndTime": 3507
              },
              "313143.7": {
                "url": "https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css",
                "children": {},
                "transferSize": 7634,
                "navStartToEndTime": 3566
              },
              "313143.8": {
                "url": "https://github.githubassets.com/assets/primer-primitives-ed9ca172356fd545.css",
                "children": {},
                "transferSize": 2556,
                "navStartToEndTime": 4428
              },
              "313143.9": {
                "url": "https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css",
                "children": {},
                "transferSize": 43556,
                "navStartToEndTime": 4213
              },
              "313143.10": {
                "url": "https://github.githubassets.com/assets/global-adcabba7b5c5d221.css",
                "children": {},
                "transferSize": 41021,
                "navStartToEndTime": 4638
              },
              "313143.11": {
                "url": "https://github.githubassets.com/assets/github-552513ad07a183a1.css",
                "children": {},
                "transferSize": 22270,
                "navStartToEndTime": 4872
              },
              "313143.12": {
                "url": "https://github.githubassets.com/assets/marketing-c6c574a5b2679474.css",
                "children": {
                  "313143.201": {
                    "url": "https://github.githubassets.com/assets/MonaSansMonoVF-wght-da74d51ce1316829.woff2",
                    "children": {},
                    "transferSize": 37800,
                    "navStartToEndTime": 11665
                  }
                },
                "transferSize": 1825,
                "navStartToEndTime": 4874
              },
              "313143.13": {
                "url": "https://github.githubassets.com/assets/home-87c3046c3560e1b7.css",
                "children": {},
                "transferSize": 7405,
                "navStartToEndTime": 4900
              },
              "313143.14": {
                "url": "https://github.githubassets.com/assets/high-contrast-cookie-e3d808ee18eb9784.js",
                "children": {},
                "transferSize": 964,
                "navStartToEndTime": 5089
              },
              "313143.20": {
                "url": "https://github.githubassets.com/assets/environment-6d7bc83f464641dd.js",
                "children": {},
                "transferSize": 3149,
                "navStartToEndTime": 10097
              },
              "313143.21": {
                "url": "https://github.githubassets.com/assets/app-runtime.b732c9a532d735a7.module.css",
                "children": {},
                "transferSize": 1502,
                "navStartToEndTime": 5085
              },
              "313143.32": {
                "url": "https://github.githubassets.com/assets/github-elements-8f7f28096a446d5d.js",
                "children": {},
                "transferSize": 3267,
                "navStartToEndTime": 14354
              },
              "313143.33": {
                "url": "https://github.githubassets.com/assets/element-registry-2b5e245fb4415fe9.js",
                "children": {
                  "313143.254": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-select-panel-c1e7af998a1d00c5.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18639
                  },
                  "313143.255": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-toggle-switch-0b0e875a5b4f4f2e.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18639
                  },
                  "313143.256": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-cookie-consent-link-107acedd3d61c045.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18640
                  },
                  "313143.257": {
                    "url": "https://github.githubassets.com/assets/chunk-dg-c9fddb85345164af.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18641
                  },
                  "313143.258": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-fullstory-capture-2484cc12a67724f1.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18641
                  },
                  "313143.259": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-ghcc-consent-c2868a800ad1375a.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18641
                  },
                  "313143.260": {
                    "url": "https://github.githubassets.com/assets/u2l.ccebc7a07d93130c.module.css",
                    "children": {},
                    "transferSize": 635,
                    "navStartToEndTime": 19013
                  },
                  "313143.261": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-react-partial-keyboard-shortcuts-dialog-841ba6c2f0aed1dc.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18643
                  },
                  "313143.262": {
                    "url": "https://github.githubassets.com/assets/7gn.e38425ead0b59349.module.css",
                    "children": {},
                    "transferSize": 1902,
                    "navStartToEndTime": 19014
                  },
                  "313143.263": {
                    "url": "https://github.githubassets.com/assets/xy.ac674e627f4d0699.module.css",
                    "children": {},
                    "transferSize": 1752,
                    "navStartToEndTime": 19014
                  }
                },
                "transferSize": 12066,
                "navStartToEndTime": 14566
              },
              "313143.49": {
                "url": "https://github.githubassets.com/assets/behaviors-592edc94fa6fd58a.js",
                "children": {
                  "313143.264": {
                    "url": "https://github.githubassets.com/assets/chunk-xg-0bc1b5900d59e0d9.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 25019
                  },
                  "313143.265": {
                    "url": "https://github.githubassets.com/assets/chunk-3m-396c8d3168589b84.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 25019
                  }
                },
                "transferSize": 60255,
                "navStartToEndTime": 24964
              },
              "313143.50": {
                "url": "https://github.githubassets.com/assets/react-core.20be589990c46106.module.css",
                "children": {},
                "transferSize": 679,
                "navStartToEndTime": 6205
              },
              "313143.52": {
                "url": "https://github.githubassets.com/assets/marketing-essentials-28b9131041e36274.js",
                "children": {
                  "313143.267": {
                    "url": "https://github.githubassets.com/assets/chunk-c1-38178dc0e7cae70d.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 25375
                  },
                  "313143.268": {
                    "url": "https://github.githubassets.com/assets/chunk-8x-e6fcfc76692041a9.js",
                    "children": {},
                    "isLongest": true,
                    "transferSize": 0,
                    "navStartToEndTime": 25375
                  }
                },
                "isLongest": true,
                "transferSize": 910,
                "navStartToEndTime": 25364
              },
              "313143.82": {
                "url": "https://github.githubassets.com/assets/landing-pages-3b4f111997bc127a.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 987
              },
              "313143.83": {
                "url": "https://github.githubassets.com/assets/primer-react-css.c4086b4d579ad1e7.module.css",
                "children": {},
                "transferSize": 35562,
                "navStartToEndTime": 9198
              },
              "313143.84": {
                "url": "https://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css",
                "children": {},
                "transferSize": 71995,
                "navStartToEndTime": 8268
              },
              "313143.85": {
                "url": "https://github.githubassets.com/assets/landing-pages.3335b8a95b85fbbc.module.css",
                "children": {},
                "transferSize": 21377,
                "navStartToEndTime": 9424
              },
              "313143.170": {
                "url": "https://github.githubassets.com/assets/obo-b97774c6eb95c7ee.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 1077
              },
              "313143.171": {
                "url": "https://github.githubassets.com/assets/bi0-5a602e8242c55c27.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 1078
              },
              "313143.172": {
                "url": "https://github.githubassets.com/assets/keyboard-shortcuts-dialog-dcd7e9b611a8d7e7.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 1078
              },
              "313143.178": {
                "url": "https://github.githubassets.com/assets/keyboard-shortcuts-dialog.63ee55a8093b9a0a.module.css",
                "children": {},
                "transferSize": 639,
                "navStartToEndTime": 9640
              },
              "313143.183": {
                "url": "https://github.githubassets.com/assets/marketing-global-banner.a53cb6fed94b4932.module.css",
                "children": {},
                "transferSize": 1757,
                "navStartToEndTime": 9641
              },
              "313143.192": {
                "url": "https://github.githubassets.com/assets/lazy-react-partial-marketing-header.18fa9e9936132bbe.module.css",
                "children": {},
                "transferSize": 3705,
                "navStartToEndTime": 9846
              },
              "313143.193": {
                "url": "https://github.com/manifest.json",
                "children": {},
                "transferSize": 4729,
                "navStartToEndTime": 21445
              },
              "313143.198": {
                "url": "https://github.githubassets.com/assets/marketing-footer.42532d8061c63a3b.module.css",
                "children": {},
                "transferSize": 1899,
                "navStartToEndTime": 9931
              }
            },
            "isLongest": true,
            "transferSize": 123009,
            "navStartToEndTime": 1307
          }
        },
        "longestChain": {
          "duration": 25375
        }
      }
    },
    {
      "type": "list-section",
      "title": "Preconnected origins",
      "value": {
        "type": "table",
        "items": [
          {
            "origin": "https://github.githubassets.com/",
            "source": {
              "lhId": "page-1-LINK",
              "path": "1,HTML,0,HEAD,6,LINK",
              "type": "node",
              "snippet": "<link rel=\"preconnect\" href=\"https://github.githubassets.com\" crossorigin=\"\">",
              "selector": "head > link",
              "nodeLabel": "head > link",
              "boundingRect": {
                "top": 0,
                "left": 0,
                "right": 0,
                "width": 0,
                "bottom": 0,
                "height": 0
              }
            },
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "origin": "https://avatars.githubusercontent.com/",
            "source": {
              "lhId": "page-2-LINK",
              "path": "1,HTML,0,HEAD,7,LINK",
              "type": "node",
              "snippet": "<link rel=\"preconnect\" href=\"https://avatars.githubusercontent.com\">",
              "selector": "head > link",
              "nodeLabel": "head > link",
              "boundingRect": {
                "top": 0,
                "left": 0,
                "right": 0,
                "width": 0,
                "bottom": 0,
                "height": 0
              }
            },
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "warning": "Unused preconnect. Only use preconnect for origins that the page is likely to request."
                }
              ]
            }
          }
        ],
        "headings": [
          {
            "key": "origin",
            "label": "Origin",
            "valueType": "text",
            "subItemsHeading": {
              "key": "warning"
            }
          },
          {
            "key": "source",
            "label": "Source",
            "valueType": "node"
          }
        ]
      },
      "description": "[preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints help the browser establish a connection earlier in the page load, saving time when the first request for that origin is made. The following are the origins that the page preconnected to."
    },
    {
      "type": "list-section",
      "title": "Preconnect candidates",
      "value": {
        "type": "text",
        "value": "No additional origins are good candidates for preconnecting"
      },
      "description": "Add [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints to your most important origins, but try to use no more than 4."
    }
  ]
}
测试环境与原始指标
{
  "finalUrl": "https://github.com/",
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
  "formFactor": "mobile",
  "throttlingMethod": "simulate",
  "throttling": {
    "rttMs": 150,
    "throughputKbps": 1638.4,
    "requestLatencyMs": 562.5,
    "uploadThroughputKbps": 675,
    "cpuSlowdownMultiplier": 4,
    "downloadThroughputKbps": 1474.5600000000002
  },
  "metrics": [
    {
      "id": "largest-contentful-paint",
      "unit": "millisecond",
      "value": 83574.587
    },
    {
      "id": "cumulative-layout-shift",
      "unit": "unitless",
      "value": 0
    },
    {
      "id": "total-blocking-time",
      "unit": "millisecond",
      "value": 434
    },
    {
      "id": "first-contentful-paint",
      "unit": "millisecond",
      "value": 54542.645
    },
    {
      "id": "speed-index",
      "unit": "millisecond",
      "value": 54542.645
    }
  ]
}

01 / 值得借鉴

好设计,具体好在哪

高度统一的品牌氛围与细腻的深色调质感

采用深基色 #0d1117 配以细腻的紫光渐变、精练的 Mona Sans 字体排印以及精准的强调绿(#08872b / #238636),迅速确立了极高的技术专业度与品牌信服力。

低摩擦的行内即时注册入口

将邮箱输入框与高对比度的“Sign up for GitHub”主按钮紧密结合,消除了繁琐的跳转路径,在首屏即可直接承接开发者的注册意向。

02 / 下一步

值得继续打磨的地方

  1. 01

    修复移动端顶部通知横幅的层叠冲突

    在 390px 移动视口中,“Join GitHub Copilot Day...”文本与汉堡菜单、Octocat 图标及“Sign in”按钮在同一水平区域重叠,破坏了导航可读性与可操作性。

    将顶部通知横幅作为独立流式块置于导航栏上方,确保移动端导航栏具有充分的顶部间距或标准块级堆叠。在 Chrome 开发者工具 390px 视口下验证文本与导航控件之间完全无重叠。

  2. 02

    区分首屏双 CTA 的层级与决策分流

    将“Sign up for GitHub”与“Download GitHub Copilot app”并列呈现且缺乏引导说明,会让访客困惑是否需要先注册账号再下载客户端,增加了决策摩擦。

    保持邮箱注册表单为首要视觉焦点,并在下载按钮旁增加微文案或轻量说明,提示 Copilot 应用需配合账号使用,监测两者的点击流向与转化率。

03 / 设计语言

把气质拆成可复用的参数

色彩

背景

#0d1117

文字

#ffffff

字体与尺度

标题字体
Mona Sans
正文字体
Mona Sans VF
标题 / 正文
64px / 14px

间距与形状

区块间距
0px
组件内距
—
卡片圆角
—
按钮圆角
6px

表达也可以更准确

文案润色对照

现在

The future of building happens together

建议表达

Build, automate, and secure software with AI

现有标题偏向抽象品牌口号。更具结果导向的标题能让初次访问者迅速了解 GitHub 全流程 AI 开发能力。

04 / 检查依据

观察与实测依据

逐项查看观察、建议与采集记录。

品味1 项观察

移动端顶部导航元素与横幅文本碰撞

高优先级

在 390px 屏幕下,“Join GitHub Copilot Day, live on Sept 10...”直接穿插在汉堡菜单与 Logo 后方,暴露出移动端上线审核的细节缺失。

确保通知横幅容器采用 position: relative 并占据正常文档流高度,或通过动态计算高度将导航栏向下偏移。在 375px 和 390px 视口下验证无遮挡。

Join GitHub Copilot Day, live on Sept 10. Come for the product news, stay for the demos, live coding, and surprises.Set your reminder Navigation Menu Platform
转化4 项观察

标题是品类套话,不是主张

高优先级

品类句读完,陌生人复述不出你在卖什么。承诺具体了,转化才开始。

一行里写出给谁、干什么、得到什么。删掉“the easiest way to”。

The future of building happens together

线上页没有统计

中优先级

看不到谁跳出,就不知道下一次修改有没有用。没有计数就等于盲飞。

在公开页放上 Plausible、PostHog 或 GA4。一段脚本就够。

no gtag / plausible / posthog / umami

图片没有 alt

中优先级

没有 alt,读屏到这里就断了,搜索也会减分。装饰图可以 alt="",内容图不行。

产品和照片写短 alt。纯装饰才用空 alt。

17 images without alt

标签标题和 H1 对不上

标签、分享卡、首屏各说各的,访客就记不住这是同一个产品。

让 title、og:title 和 H1 共用同一个名词。

title="GitHub · Change is constant. GitHub keeps you ahead. · GitHub" h1="The future of building happens together"
上线1 项观察

HTML 体积过大

中优先级

首包超过 350 KB,多半是内联垃圾:整份 CSS、JSON,或整个应用。手机还没看到标题就已经在付钱。

把 CSS 和数据移出文档。首包 HTML 控制在 200 KB 以内。

563 KB HTML
链接分享预览

05 / 开始动手

把下一步,交给你的 AI

优化指令用于调整这个页面;设计指令用于借鉴它的视觉语言。「做同款」会附带截图与实施步骤。复制后粘贴到你的代码助手中。

查看完整指令
修复 GitHub 首页移动端顶部通知横幅与导航栏的层叠重叠缺陷。

问题描述:
在移动端视口(390px 宽)下,顶部活动横幅文字('Join GitHub Copilot Day, live on Sept 10...')与导航栏内的汉堡菜单图标、GitHub Logo 以及“Sign in”按钮发生物理重叠,影响可读性与操作。

修改需求:
1. 调整头部布局结构,使通知横幅处于独立的文档流块中,具备完整的空间高度。导航栏若处于 sticky 或 fixed 状态,必须明确位于横幅下方,避免负边距与 z-index 层叠混乱。
2. 严格保留设计令牌:背景色 #0d1117,字体栈 'Mona Sans VF', 'Mona Sans',正文 14px,按钮圆角 6px,输入框圆角 8px,主按钮背景色 #08872b / #238636。
3. 在断点低于 63.25rem(--brand-breakpoint-large)时,调整通知文案排版或支持折叠收起,禁止与导航栏按钮产生任何接触或遮挡。
4. 在 375px、390px 和 414px 视口下测试,确认横幅、汉堡菜单按钮、Logo 与 Sign in 按钮间距正常且无任何穿透现象。