【发布时间】:2016-09-09 12:22:08
【问题描述】:
像这样在相应的设备上显示视网膜和非视网膜:
<picture>
<source srcset="non-retina.jpg, retina.jpg 2x">
<img src="non-retina.jpg">
</picture>
有效。但是 Google Pagespeed Insight 告诉它,在加载 CSS 之前它无法渲染它,我们会因此受到惩罚。然而,仅在移动视图中 - 这是 Pagespeed Insights 渲染 Retina 图像的唯一情况。
我们完整的 CSS 文件在页脚中,因为我们在头部有首屏、关键的 CSS 内联。
但是,此代码可以正常工作,不会受到 Pagespeed Insights 的任何投诉
<picture>
<img src="non-retina.jpg">
</picture>
我们缺少什么?在知道要采用哪个源/srcset-image 之前,浏览器是否必须读取样式规则?
测试用例:
这是它的测试页面:http://pagespeed-srcset-nopicturefill.slople.com/ ... 结果如下:https://developers.google.com/speed/pagespeed/insights/?url=http%3A%2F%2Fpagespeed-srcset-nopicturefill.slople.com%2F&tab=mobile
【问题讨论】:
-
您是否使用 polyfill 来支持旧浏览器中的图片标签?
-
没有。只是做 时也会发生同样的情况
-
根据scottjehl.github.io/picturefill/#support 似乎有些浏览器不完全支持图片/srcset 规范,http 请求存在一些问题。不过,我不知道这个问题是否也会影响 pagespeed 结果
-
我得到了 100/100 移动分数,其标记与您的示例中的相同,并且在页脚中加载了一个 CSS 文件:developers.google.com/speed/pagespeed/insights/… 您能否提供受影响网页的链接,或简化的测试用例显示页面速度问题?
-
你没有错过任何东西; Pagespeed 错误地假设您的图像可以通过将渲染图像的尺寸与文件分辨率进行比较来优化。我不建议关注分数本身,而是关注实际指标:关键渲染路径、交互时间以及对慢速连接和低端设备的测试,在 3G 上是否会在前 3 秒内发生有意义的绘制?有 FOIT 吗? Pagespeed 分数也不应该对您的搜索结果产生任何重大影响,所以我不会认为它是一种惩罚。
标签: css pagespeed google-pagespeed srcset