图片是很多站点里最容易被忽略的体积来源。一次改版之后,首页往往多了几张大图、几个轮播、几个装饰性背景,页面在浏览器里看着还行,但服务器日志里会看到蜘蛛反复抓取同一批图片资源。图片本身要被抓取才能进入图片搜索,但如果一张图是 2MB 的未压缩 PNG,抓取它就是实打实地花掉了抓取预算和带宽。
先分清哪些图片值得被蜘蛛抓
不是所有图片都需要被收录。可以粗略分三类:
- 内容图:正文里的示意图、流程图、产品实拍图,这类图有独立检索价值,值得被抓取和索引。
- 装饰图:分隔线、背景纹理、纯样式的圆角阴影,这类图对用户有观感价值,但对检索没有意义。
- 交互图:图标按钮、hover 状态切图,通常由 CSS 或雪碧图合成,蜘蛛抓到也没用。
分类之后处理方式就清楚了:内容图优化体积并写好替代文本;装饰图和交互图尽量用 CSS 实现,或者至少不要出现在可抓取的 img 标签里。
体积、格式与尺寸
这三项是图片优化里最直接见效的部分,判断标准也很简单:
- 尺寸按实际展示的最大宽度导出,别用 2000px 宽的图缩到 400px 显示。
- 照片类内容优先 WebP 或 AVIF,配合 JPEG 兜底;带透明通道的图标用 SVG。
- 压缩工具过一遍,通常能在肉眼基本无感的情况下砍掉一半以上体积。
- 响应式场景用 srcset 提供多档尺寸,别让手机端下载桌面大图。
加载方式:首屏图不要延迟加载
lazy loading 用不好会同时伤到用户和蜘蛛。首屏主图如果被加上 loading="lazy",在某些渲染策略下可能一直不触发加载,蜘蛛拿到的是空白占位。建议首屏第一张图用 loading="eager" 并加 fetchpriority="high",折叠线以下的图再用 lazy;同时给 img 写上 width、height 或 aspect-ratio,避免加载过程中布局跳动。
文件名与替代文本
文件名是少数几个蜘蛛能直接读懂图片内容的信号之一。IMG_2381.jpg 不如 disk-water-level-monitor.png 这类带语义的名字。alt 写清楚这张图在说明什么,不要堆关键词,也不要写「图片」「点击查看大图」这类没有信息量的占位文本。装饰性图片用空 alt(alt=""),明确告诉辅助技术和抓取程序这张图可以跳过。
图片站点地图与 CDN
如果站点图片量较大,可以单独维护一份图片 sitemap,把内容图的 URL、所在页面、标题和 caption 一并列出。注意两点:一是图片走 CDN 时,确认 CDN 没有对图片请求返回异常状态码或错误的 Content-Type;二是 CDN 的缓存策略要和图片更新节奏对齐,换图后记得刷新缓存,否则蜘蛛拿到的是旧图。
可执行的自查清单
- 拉一份最近 7 天的访问日志,按扩展名统计抓取量占比,看看图片请求是不是明显偏高。
- 抽查首页和栏目页,找出体积最大的前 20 张图,逐张判断是否必须保留。
- 检查首屏图片有没有被误加 lazy loading。
- 批量扫描 alt 缺失、alt 重复、alt 写成「图片」的页面。
- 确认 CDN 对图片返回 200 且 Content-Type 正确。
- 换图后执行一次缓存刷新,并在日志里确认蜘蛛抓到了新版本。
图片优化的目标不是把所有图删掉,而是让每一张被抓取的图都对得起它花掉的那份抓取预算。
这件事不需要一次性做完。每周挑一个栏目,把上面六条过一遍,几个月下来整站的图片负担会明显下降,蜘蛛也能把更多时间花在真正需要收录的页面上。