我的 Ruby on Rails 应用程序使用以下控制器代码生成 sitemap.xml 文件:
class SitemapController < ApplicationController
layout nil
def index
headers['Content-Type'] = 'application/xml'
last_post = Post.last
if stale?(:etag => last_post, :last_modified => last_post.updated_at.utc)
respond_to do |format|
format.xml { @posts = Post.sitemap } # sitemap is a named scope
end
end
end
end
我的理解是,stale?
如果内容没有更改,该方法应确保 HTTP 304 Not Modified 响应。但是,每当我使用 curl 或 Web 浏览器进行测试时,我总是得到 HTTP 200:
$ curl --head localhost:3000/sitemap.xml HTTP/1.1 200 正常 连接:关闭 日期:2009 年 4 月 13 日星期一 15:50:00 GMT 最后修改时间:格林威治标准时间 2009 年 4 月 8 日星期三 16:52:07 X-运行时:100 ETag:“5ff2ed60dddcdecf291e7191e1ad540f6” 缓存控制:私有,max-age=0,必须重新验证 内容类型:应用程序/xml;字符集=utf-8 内容长度:29318
我stale?
是否正确使用该方法?甚至可以在本地进行测试吗?