动态提供内容

动态提供内容是一项设置;启用这项设置后,服务器会根据请求相应网页的用户代理,通过同一网址提供不同的 HTML(和 CSS)。

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

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

要点

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

Vary HTTP 标头

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

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

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

GET /page-1 HTTP/1.1
Host: www.example.com
(...rest of HTTP request headers...)

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

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

正确检测用户代理

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

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

  3. 在检测用户代理时,请格外留意隐藏真实内容的情况。在检测用户代理时,网站会采用在用户代理字符串中查找设备名称的方式来检测设备类别或类型;网站不应专门查找 Googlebot。所有 Googlebot 用户代理都会将它们自身视作特定的移动设备,因此,您应该完全以对待这些设备的方式对待这些 Googlebot 用户代理。例如,智能手机专用的 Googlebot 会将自己视作 iPhone,因此您对它的响应就应与对 iPhone 用户的响应(重定向、已优化的内容,等等)完全一样。

发送以下问题的反馈:

此网页