【发布时间】:2020-03-11 03:17:09
【问题描述】:
产品
对于桌面,我有一个页面速度得分不错的网站(目前为 96):https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fwww.usstoragecenters.com%2Fstorage-units%2Fca%2Falhambra%2F2500-w-hellman-ave&tab=desktop
舞台
我正在努力提高分数(主要针对移动设备),但不知何故我让它变得更糟(目前,桌面设备为 69):https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fstage.usstoragecenters.com%2Fstorage-units%2Fca%2Falhambra%2F2500-w-hellman-ave%3Fplain%3Dtrue&tab=mobile
问题
在将网站从 Angular(第一个链接)转换为纯 JavaScript(第二个链接)时,我设法将桌面版 Google PageSpeed Insights 得分从 96 降低到 69。
我大幅减少了 JavaScript 和其他资源的数量(产品为 2MB,舞台为 500KB)。
分析
查看数字,让我印象深刻的是 prod 的 FCP(First Contentful Paint)为 0.7 秒,而 stage 的 FCP 为 2.0 秒。这对我来说似乎很奇怪,因为阶段应该快得多,但显然要慢得多。
查看缩略图的移动时间轴(桌面有点难以看到),似乎舞台渲染第一个“完整内容”的速度要快得多:
我突出显示了在我看来看起来“完整”的那些(舞台在顶部,产品在底部)。
截图
这里有一些屏幕截图,您可以看到我在做什么(PageSpeed Insights 每次运行时都会有很大的不同)。
这里是舞台:
这是生产:
变更摘要
以下是我在尝试提高分数时所做的主要工作:
- 我将 JavaScript 从 Angular 转换为纯 JavaScript,显着减少了呈现页面所需的 JavaScript。
- 我延迟加载 JavaScript(例如,Google Maps JavaScript 在需要时才加载)。
- 我延迟加载图片(例如,幻灯片最初只加载第一张图片)。
- 我减少了 DOM 元素的数量(从 4,600 个减少到 1,700 个)。
- 我正在使用 HTTP/2 服务器推送以尽可能快地加载新的纯 JavaScript。
这些变化应该提高了分数。
问题
您知道为什么尽管我尽了最大努力,PageSpeed 的得分还是下降了?
【问题讨论】:
-
顺便说一句,有一些 cookie 会检查它是否是第一个页面加载(例如,注入关键路径 CSS)。您可以将“&simulate-first-page-load=true”作为查询字符串参数添加到任何 URL,以查看 Google 会在第一个页面加载时看到什么。
-
是否在同样快速、强大的服务器和后端数据库上进行登台和生产?在您进行更改之前,staging 的得分高吗?
-
是的,它们几乎完全相同,并且之前的 stage 非常接近 prod。两台服务器都使用 Cloudflare 作为代理,因此涉及到一些起伏的缓存。考虑到 Cloudflare 正在缓存 HTML、CSS、JavaScript、图像等,在这种情况下,后端性能在很大程度上应该是无关紧要的。
-
我投票决定将此问题作为题外话结束,因为您需要在此处发布minimal reproducible example,在您的问题中,而不是任何第三方网站。这也与服务器配置有关,并且在一定程度上与 SEO 有关,这两者都不是这里的主题。
-
页面速度是一个复杂的问题。如果我可以将其简化为一个小例子,我就不需要帮助来找出问题所在。另外,问题是关于 PageSpeed Insights,所以我必须链接到它。我还提供了屏幕截图,以防这些链接稍后过期。
标签: javascript css optimization pagespeed google-pagespeed