必应索引中的乱码:当zstd遇上搜索引擎爬虫

博客同时开启了zstd、gzip和br压缩,因为zstd能够做到压缩比与gzip相似的同时大幅降低CPU占用率,所以我就把默认压缩改成了zstd。我也做了兼容处理,当浏览器传送的accept-encoding不存在zstd时会回退到gzip和br,缓存也对不同的accept-encoding头做不同的响应,结果前天搜了一下网站就发现有部分网页变成乱码了。

必应搜索结果的乱码
必应搜索结果的乱码

到必应站长工具一看

必应提示的SEO问题
必应提示的SEO问题

必应抓取到的HTML内容
必应抓取到的HTML内容

HTTP响应提示必应蜘蛛抓取到了zstd编码的页面
HTTP响应提示必应蜘蛛抓取到了zstd编码的页面

这一个是正常索引的页面

正常索引的页面是gzip压缩
正常索引的页面是gzip压缩

按理说只要必应蜘蛛没有发送带zstd的accept-encoding请求头就不会使用zstd压缩,但是具体哪一个环节出问题了我也不知道,还是直接调回gzip默认吧。

对了,可以看看压缩率。zstd、gzip和br的压缩级别分别为6、5、4。文章1的代码块比较多。

压缩算法文章1文章2
未压缩309kb69.6kb
zstd27.9kb17.2kb
gzip39.5kb16.8kb
br28.517kb

加载评论…