我的导轨代码:
def index
battles = Battle.feed(current_user, params[:category_name], params[:future_time])
@battles = paginate battles, per_page: 50
if stale?([@battles, current_user.id], template: false)
render 'index'
end
end
如果我手动发送If-None-Match标头和最后一个Etag,我会得到304状态代码作为回报,如果我不手动发送(标头是自动发送的,具有相同的If-None-Match标头)我得到200状态代码......
我正在使用Postman rest客户端检查服务器(启用缓存)。
答案 0 :(得分:0)
我无法评论Rails方面的内容,但如果我关注你,这是正确的行为。
当发送“If-None-Match”时,如果内容未更改(相同的电子标签),则会得到304。这基本上是说你自己或者代理之间的某些内容已经有了内容,因此不需要再次转移主体。
如果你省略了标题,那么你会看到一个200.默认情况下,邮差会发送一组标题,但它也是非常精简的,因为它剥离了很多。在您的浏览器中尝试相同的请求,您将获得304.您将看到您的浏览器将设置为尽可能使用缓存。
如果您依赖服务器端缓存,情况可能会有所不同。您可能会看到看起来像是一个新的响应,但服务器实际上做的很少,但却产生了200响应。
总结标题是从您的描述中做正确的工作。