影视周边店有个常见现象:海报图、剧照横幅做得越精美,手机打开首页反而越慢。店主第一反应是压缩图片,结果压到模糊了,测速还是红的。其实问题常常不在文件大小,而在浏览器发现图片太晚,或者图片下载完了却迟迟显示不出来。
优化之前先确认一件事:当前页面的LCP元素到底是不是那张首屏大图。LCP也可能是标题文字或按钮,看到大图就下结论会修错地方。用Performance面板录一次,确认LCP元素,再把它的资源URL对应到Network瀑布图。不同模板、不同设备选中的LCP元素可能不一样,记录下当次条件再动手。
先修发现和加载方式
如果确认LCP元素是首屏图,第一步是让浏览器尽早发现它。常见坑有三种:图片只有data-src要等脚本注入才出现、图片藏在切换后才显示的轮播第二帧、首屏图被写了懒加载。Shopify官方建议很明确:不要对LCP图和关键首屏图懒加载。实际img要有可发现的src或srcset,只靠脚本注入的资源会延后发现。
确认图片用途后,给已识别的LCP图去掉lazy,改用合适的默认行为,再按需要给它提高加载优先级。优先级只是提示浏览器先下哪个资源,不是插队保证,更不能把全页图片都设成最高。一次只动LCP图,改完测一次,再决定要不要动下一处。
一个带前提的Liquid改法
以下改法只适用于一种布局:当前section确实有image设置,且这张图就是本页的LCP图。把img标签的loading从lazy改成eager,并给它加上合适的fetchpriority。改之前先问两个问题:这个section会不会出现在折叠内容里被复用,其他页面用同一个section时首屏图还是不是它。如果答案有一项不确定,就不要全局改这个snippet,只处理当前模板。
改完不要只看实验室分数,要看真实变化:同一设备、同一网络下重测,LCP时间有没有下降,图片请求在瀑布图里是不是提前了。只有效果稳定,才算修完一处。
下载完了还不显示,查显示延迟
有一种情况容易误判:图片已经下载完成,LCP还是高。这时要查元素呈现延迟,比如首屏图被开场动画、淡入效果或字体swap挡住,或者父容器先设了隐藏再由脚本显示。去掉lazy解决的只是下载延迟,显示延迟要去动画和渲染上找。逐项关掉可疑效果再测,找到真凶再决定保留还是删掉,不要为了分数把品牌动效全砍了。
完整的排查顺序、Liquid示例的前提条件和复测记录方法,可以对照Shopify首屏图LCP优化的排查与复测步骤逐项执行。按“确认元素、修发现加载、查显示延迟、保留记录”的顺序走一遍,大多数首屏图问题都能定位到具体环节,而不是反复压缩试运气。