很多站点的 HTML 本身並不大,真正吃掉服務器带宽和抓取時間的,是图片、视频封面、附件 PDF 這類媒体资源。它們平时不出問题,一旦換 CDN、改目錄结构或者批量替換模板,就容易留下大量指向舊地址的引用,蜘蛛顺着爬過去只拿到一串 404。這篇把图片與媒体资源的自查拆成几块,可以按顺序過一遍,也可以只挑目前站点最可疑的部分检查。
先確認图片目錄没有被挡住
图片通常放在 /uploads/、/static/、/assets/ 這類目錄下。有些站点為了省流量,會在 robots.txt 里直接屏蔽整個图片目錄,或者用防盗鏈規則把非本站 Referer 的請求全部拦掉。屏蔽图片本身不一定有問题,但如果你同时又希望图片出現在图片搜尋结果里,两邊就會打架。
建议顺手確認三件事:
- robots.txt 中是否有针對图片、附件目錄的 Disallow 規則,是否還符合目前预期。
- 防盗鏈規則是否把搜尋引擎的抓取 UA 也拦住了,常见表現是图片在浏览器里能看,抓取日誌里却全是 403。
- 測試环境或临时目錄是否被誤同步到正式站,導致出現两套图片地址。
URL 稳定性:換了域名或 CDN 之後最容易出問题
图片地址一旦變化,頁面上的引用、站外轉载、收藏夹里的連結都會同时失效。自查时可以關注這些点:
- 是否還残留指向舊域名或舊 CDN 域名的图片地址,這類地址如果已经不再解析,用戶看到的是破图,蜘蛛看到的是错誤狀態碼。
- 图片 URL 里是否带上了會變化的參數,比如時間戳、随机會话 ID、临时簽名。簽名過期的地址短期内就會失效。
- 缩略图是否使用了固定的尺寸命名規則。如果同一張图有七八種尺寸,最好確認這些衍生地址是否真的需要被單獨抓取。
對于已经確認不用的图片地址,返回 404 或 410 比返回一個空图片更清楚,避免让抓取工具反复回来確認。
懒加载與 JavaScript 渲染
為了提升首屏速度,很多站点把图片改成滚動到可视区域再加载。如果實現方式只是在頁面初始 HTML 里放一個占位符,真實地址由脚本後面寫進 src,那么不执行脚本的抓取方式就只能看到一個空壳。常见做法是把真實地址放在 data-src 之類的属性里,同时保留一個可用的 src 兜底,或者确保图片地址在初始 HTML 中就能被讀到。
自查时可以用禁用 JavaScript 的方式打開頁面,看看图片是否還有可訪問的地址,而不是只剩占位色块。
体积與格式:別让一張图吃掉整頁预算
图片体积不直接影响收錄,但會影响加载速度和服務器压力,間接影响抓取效率。可以按這几個方向梳理:
- 尺寸:頁面展示宽度是 800 像素,就不要上传 4000 像素的原图再由 CSS 缩小。
- 格式:照片類内容可以考虑 WebP 等体积更小的格式,图标和简單图形用 SVG 往往比位图更省。
- 响應式:如果用了 srcset,確認各档尺寸的地址都存在,避免小屏用戶請求到大图或反之。
- 宽高属性:给图片寫上 width 和 height,可以减少頁面加载過程中的布局跳動。
文字信息:alt、文件名和周邊内容
alt 文本首先是给看不见图片的用戶用的,顺带也能帮助理解图片内容。寫法上不必堆關鍵詞,说清楚图里是什么就够了。文件名同理,2024-03-product-01.jpg 比 IMG_8832.jpg 更有信息量,但也不用為了塞词把文件名寫成一長串。
另外可以留意图片周围的正文和标题是否和图片相關。一張商品图放在完全不相關的文章里,對用戶和抓取都没有帮助。
容易被忽略的非 HTML 资源
除了常規图片,還有几類文件值得纳入巡检范围:
- 产品手册、白皮书這類 PDF,是否還在被頁面引用,文件本身是否可正常打開。
- 视频封面图與播放器资源,確認封面地址没有失效。
- 站点图标和分享卡片图,地址變更後社交平台可能仍缓存舊图。
- 字体文件,跨域配置不正确时會出現文字闪烁甚至顯示異常。
一份可执行的巡检清單
- 從訪問日誌中筛出图片與附件的错誤狀態碼,按出現次數排序,先處理高频的。
- 抽查若干主力頁面,禁用 JavaScript 後確認图片地址仍可讀取。
- 检查 robots.txt 與防盗鏈規則,確認没有誤伤抓取。
- 統計單頁媒体资源總体积,挑出最重的几個頁面做压缩或換格式。
- 补全缺失的 alt 和宽高属性,優先處理列表頁和詳情頁首图。
- 對已確認下线的媒体地址,统一返回 404 或 410,不再保留空文件。
這套检查不需要一次做完,可以按季度安排一次全量抽查,平时發布内容时留意新上传的文件即可。媒体资源的問题通常不會立刻顯現,但积累起来會實實在在增加服務器负担和無效抓取。