事情本身不复杂,线索都在日志里。视频库有九千条记录,生成的视频 sitemap 未压缩 62MB,提交到必应后台一直提示文件过大,同期普通 sitemap 只有 8MB 能正常读取。
第一反应是「没有拆成索引文件,所有记录塞在一个 urlset 里」,验证下来不成立。
这类报错背后常见的原因有几处,逐个排除就行。单个 sitemap 未压缩体积上限是 50MB,超出直接拒收。还有一种是视频节点里带了完整描述和缩略图地址,单条体积偏大。
另外,服务器没有开 gzip,传输的是原始大小。
量一下文件实际大小和条目数
ls -lh video-sitemap.xml; grep -c '<url>' video-sitemap.xml
随后按两千条一片拆分并生成索引
python split_sitemap.py --src video-sitemap.xml --size 2000 --index
然后开启 gzip 并确认响应头
gzip -9 -c video-sitemap.xml > video-sitemap.xml.gz; curl -sI https://www.example.com/video-sitemap.xml.gz | grep -i content-encoding
剩下的就是在 robots 里指向索引文件
Sitemap: https://www.example.com/video-sitemap-index.xml
改完先别撤,确认这几项。索引文件与分片都能返回 200,单文件体积落到 12MB 以内,后台状态从文件过大变成已读取。
提醒一点。体积上限按未压缩计算,开 gzip 只能省带宽不能绕过限制,拆片才是正解。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
