【发布时间】:2014-03-20 09:03:44
【问题描述】:
我正在使用 stale? 方法在我的 JSON API 中进行条件 GET 缓存。
我用
@post = Post.find(params[:post_id])
if stale? @post
#continue
end
AFAIK 这使用帖子的 updated_at 来制作缓存键。有什么方法可以在不执行 post.touch 的情况下使该项目的缓存条目过期?我正在使用 Heroku。
【问题讨论】:
-
您是否在使用某种 http 缓存代理(如 rack-cache)并设置 s-maxage 以使请求不会命中堆栈?
-
@JesseGoodfellow 不,我不这么认为。该请求肯定会命中堆栈,因为我的 Post Controller 中使用了
stale?方法 -
您试图使条目过期的缓存是什么?浏览器缓存?你是说即使记录没有改变你也想用 200 回应?还是记录被修改但仍以 304 响应?如果陈旧?方法使用 etag,您可以通过修改 ENV['RAILS_CACHE_ID'] 变量来使应用中的所有 etag 失效
-
@JesseGoodfellow 是的,基本上我对 api 响应的外观进行了更改。模型/记录本身没有改变。所以我希望能够停止发送 304 NOT MODIFIED 并发送 200。
标签: ruby-on-rails heroku http-caching