Par*_*uce 8 ruby-on-rails ruby-on-rails-4
是否可以stale?与集合一起使用?例如,我正在开发一个REST api,它允许客户端偶尔查询服务器以询问最新的项目列表.如果stale?能够针对我的If-Modified ..标头检查集合并且如果没有任何变化则发送304 将是很好的.
快速举例:
def index
@items = Item.all
if stale?(@items)
render json: @items
end
end
def show
if stale?(@item)
render json: @item
end
end
Run Code Online (Sandbox Code Playgroud)
你可以这样做
stale?(@items, last_modified: @items.order('updated_at ASC').last)
Run Code Online (Sandbox Code Playgroud)
第二个参数是内部调用的哈希值additional_options,它被传递给fresh_when方法,然后该方法执行
{ etag: record, last_modified: record.try(:updated_at) }.merge!(additional_options)
Run Code Online (Sandbox Code Playgroud)
在您的情况下,记录是第一个参数@items,因此通过传递last_modified值您可以覆盖它。我不确定etag标头本身怎么样,但无论如何这都值得一试。
编辑:
所以我检查了它,如果 Etag 不同或上次修改的值大于请求的值,Rails 会认为响应是新鲜的/不是陈旧的。
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |