图片是很多站点里最容易被忽略的体积来源。一次改版之後,首頁往往多了几張大图、几個轮播、几個装饰性背景,頁面在浏览器里看着還行,但服務器日誌里會看到蜘蛛反复抓取同一批图片资源。图片本身要被抓取才能進入图片搜尋,但如果一張图是 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 正确。
- 換图後执行一次缓存刷新,並在日誌里確認蜘蛛抓到了新版本。
图片優化的目标不是把所有图删掉,而是让每一張被抓取的图都對得起它花掉的那份抓取预算。
這件事不需要一次性做完。每周挑一個栏目,把上面六條過一遍,几個月下来整站的图片负担會明顯下降,蜘蛛也能把更多時間花在真正需要收錄的頁面上。