动态提供内容

动态提供内容是一项设置;启用这项设置后,服务器会通过同一网址提供不同的 HTML(和 CSS),具体取决于请求网页的用户代理(移动设备、平板电脑或桌面设备)。

采用这种设置时,网站针对移动设备用户代理对 HTML 进行的更改不会立即生效(当使用桌面设备用户代理进行抓取时,移动设备内容会处于“隐藏”状态),因此,我们建议服务器发送一条提示,以便请求智能手机专用的 Googlebot 也抓取网页,从而发现移动设备内容。此提示是使用 Vary HTTP 标头实现的。

“动态提供内容”设置会通过同一网址向每种设备提供不同的代码。

要点

  • 使用 Vary HTTP 标头根据用户代理表明您所做的更改。
  • 正确检测用户代理字符串。

Vary HTTP 标头

Vary HTTP 标头具有以下两个非常重要且实用的作用:

  • 它会向 ISP 和其他位置使用的缓存服务器表明:在决定是否通过缓存来提供网页时它们应考虑用户代理。如果您没有使用 Vary HTTP 标头,缓存可能会错误地向移动设备用户提供桌面版 HTML 网页的缓存(反之亦然)。
  • 它有助于 Googlebot 更快速地发现针对移动设备进行优化的内容,这是因为我们在抓取提供针对移动设备进行优化的内容的网址时,会将有效的 Vary HTTP 标头作为抓取信号之一。

Vary HTTP 标头是服务器对请求做出的响应的一部分,如下所示:

HTTP/1.1 200 OK
Content-Type: text/html
Vary: User-Agent
Content-Length: 5710
(... rest of HTTP response headers...)

Vary HTTP 标头会告知浏览器响应的内容将因请求网页的用户代理而异。如果您的服务器已使用 Vary HTTP 标头,那么您可以向已提供的列表添加 User-Agent

正确检测用户代理

通常,检测用户代理(有时称为用户代理“嗅探”)是一项易于出错的技术。导致出错的原因有很多,但最常见的原因是以下三类故障:

  1. 用户代理检测需要比对用户代理字符串(或子字符串)列表。此类列表需要经常维护和更新,否则不包含新用户代理对应的字符串。事实上,许多此类列表都得不到适当的维护并包含过时内容,从而给用户带来不良的体验。
  2. 在比对用户代理时经常会出现不匹配的情况,系统有时会将桌面设备用户代理检测为移动设备用户代理,或将移动设备用户代理检测为桌面设备用户代理。同样,网站经常误将平板电脑设备视作智能手机。如果您要检测访问您网站的浏览器所使用的用户代理,请确保此项检测搜寻的是智能手机专用的字符串(例如,同时查找字词“Android”和“Mobile”),而不是搜寻通用的移动设备字符串(只查找“Android”一词)。有关详情,请参阅我们的博文

  3. 在检测用户代理时,请格外留意隐藏真实内容的情况。在检测用户代理时,网站会在用户代理字符串中查找设备名称,藉此检测设备类别或类型;网站不应专门查找 Googlebot。所有 Googlebot 用户代理都会将它们自身视作特定的移动设备,因此,您应该完全以对待这些设备的方式对待这些 Googlebot 用户代理。

    如果设置正确,为 Googlebot 等抓取工具预呈现内容便不会被视为隐藏真实内容