GX博客

分享个人 Full-Stack JavaScript 项目开发经验

客户端缓存控制方式对SEO的影响

在查看搜索引擎的网页快照时候,我们偶尔会看到一些什么样式都没有的网页快照,这是为什么呢?


目前流行的前端打包工具都可以配置使 javascript、css、图片等静态资源文件名中包含哈希值,使资源更新时可以强制浏览器请求改变后的资源。这样的处理方式,只要合理分包,每次可以尽量少的更新下载修改后的资源,也可以放心的通过 Expires 等响应头设置长期的客户端缓存时间了。

正是由于使用了哈希值文件名资源的原因,当服务器端资源发生更新时,网页快照中依然保留着旧的哈希值资源地址,所以导致无法找到 css 等资源,最后显示为没有样式的网页快照。

虽然对于搜索引擎来说,这并不会有什么影响,它主要识别的是你的代码和内容,但这会影响搜索者的体验。

若使用传统的 Expires、Last-Modified、Etag 等缓存相关响应头,亦会有一些弊端。例如,如果还没超过缓存有效时间则不利于客户端及时更新服务器资源,又或者服务器在计算实体标签时带来了额外的开销。

搜索引擎可能会隔一段比较长的时间才会再次抓取你的网页快照。为了不影响快照页面的美观,可以将已经过期的样式文件在资源服务器上保留一段时间。

使用哈希文件名资源的方式,服务器就没必要再使用 Etag 了,可以将它禁用。Nginx 中禁用 Etag 的配置如下:

http {
    # http, server, location
    etag off;
}

版权声明:

本文为博主原创文章,若需转载,须注明出处,添加原文链接。

https://leeguangxing.cn/blog_post_52.html