Rails heroku应用程序上的Robots.txt文件没有更新

时间:2014-04-30 13:35:04

标签: ruby-on-rails heroku robots.txt

我已经在Heroku上托管了一个rails应用程序,我正在尝试更新robot.txt文件。

位于/public/robots.txt的本地文件显示为:

User-agent: *
Disallow: /admin/

但是,当我将应用程序部署到Heroku时,机器人文件似乎没有更新。远程版本为:

# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the     robots.txt file
#
# To ban all spiders from the entire site uncomment the next two lines:
User-agent: *
Disallow: /

实时网址为http://www.cowboypicks.com/robots.txt

运行curl -I http://www.cowboypicks.com/robots.txt会产生:

HTTP/1.1 200 OK
Age: 2317078
Cache-Control: public, max-age=2592000
Content-length: 200
Content-Type: text/plain
Date: Wed, 30 Apr 2014 17:01:43 GMT
Last-Modified: Thu, 03 Apr 2014 14:21:08 GMT
Status: 200 OK
X-Content-Digest: 10c5b29b9aa0c6be63a410671662a29a796bc772
X-Rack-Cache: fresh
Connection: keep-alive

表明该文件自4月3日起尚未更新,但已于今天(4月30日)更新。更奇怪的是,当我运行heroku run bash后跟cat public/robots.txt时,我得到:

User-agent: *
Disallow: /admin/

表示文件正在Heroku上更新,但由于某种原因,它显示了较旧的(我假设缓存)版本。使用dalli / memcache在应用程序上有一些缓存,但我不会想到会影响静态文件?关于如何进一步调试问题的任何想法?

1 个答案:

答案 0 :(得分:8)

事实证明,Dalli确实在生产中缓存了robots.txt文件。到期日期在production.rb中设置为:

 config.static_cache_control = "public, max-age=2592000"

从rails控制台运行以下内容会刷新缓存并对问题进行排序:

Rails.cache.dalli.flush_all