Nginx 仅为机器人/蜘蛛缓存页面

Nginx 仅为机器人/蜘蛛缓存页面

假设我们有一个在线商店网站。它包含要出售的商品列表及其相关价格。由于价格背后的数学计算混乱(他们过去根据用户历史记录提供折扣,我们无法改变这一点),每个页面可能需要一些时间才能呈现。

这通常不是问题,除非搜索蜘蛛/机器人积极地重新索引网站。并且网站开始计算每个比特请求的价格,尽管机器人不会有任何“个人”折扣等。

我想使用类似的 nginx 缓存功能,但问题是 nginx 不会缓存带有“Set-Cookie”标头的答案。是的,网站的页面总是尝试设置 cookie,即使是对于机器人也是如此。

我无法修改网站的代码,所以唯一的想法是使用缓存并提供过时的缓存仅适用于机器人

map $http_user_agent $do_not_cache_it {
  "~Bot"  "1";
  default "0";
}
..
server  {
  location / {
    ...
    proxy_cache_bypass $do_not_cache_it;
    proxy_ignore_headers "Set-Cookie";
    proxy_hide_header "Set-Cookie";
    ...
  }
}

这是可行的,但是所有请求的 cookie 都会被清除和隐藏,而不仅仅是机器人发起的请求,因此即使是人类用户也无法登录到网站。

无论如何,我可以成功玩这个 nginx 缓存游戏, 请?

相关内容