我已经在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在应用程序上有一些缓存,但我不会想到会影响静态文件?关于如何进一步调试问题的任何想法?
答案 0 :(得分:8)
事实证明,Dalli确实在生产中缓存了robots.txt文件。到期日期在production.rb
中设置为:
config.static_cache_control = "public, max-age=2592000"
从rails控制台运行以下内容会刷新缓存并对问题进行排序:
Rails.cache.dalli.flush_all