ruby-on-rails - Rails - etags 与页面缓存(文件缓存)

标签 ruby-on-rails caching etag

使用 etags/stale?/fresh_when 有哪些优点?而不是页面缓存(在文件缓存上)?

Apache 会自动处理静态文件的 etag,但即使不这样做,页面缓存仍然会更好,因为 Rails 应用程序甚至不会被调用。

那么,在什么情况下我会使用 Rails 提供的方法(stale?/fresh_when?)?

最佳答案

他们真的很互补。 Etags/fresh_when 等帮助您很好地处理下游缓存(例如您自己的 Varnish/Squid 实例或 Rack::Cache 或浏览器缓存或 ISP 代理服务器...)

页面缓存可以让您完全避免碰到 Rails 堆栈,因为 Apache/您的 Web 服务器提供文件服务,因此不需要进行数据库查找。但您必须处理缓存过期问题以保持缓存新鲜。

使用 etags/conditional get,您不会节省太多处理时间,因为您仍然需要获取页面上使用的所有记录:

def show
  @article = Article.find(params[:id])
  @feature = Feature.current
  fresh_when :etag => [@article, @feature] 
end

如果用户有当前页面,它可以节省一些渲染时间和发送页面所需的带宽。

关于ruby-on-rails - Rails - etags 与页面缓存(文件缓存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832035/

相关文章:

ruby-on-rails - sidekiq getaddrinfo错误(没有地址)

internet-explorer - IE9 收到 ETag 后伪造 304

emacs - 是否可以在 emacs 中自动重新生成和加载标签表,而不必继续运行访问标签表?

mysql - 动态第二数据库Ruby

ruby-on-rails - Rails 3.2.3 之前从公用文件夹加载 javascript

ruby-on-rails - 使用回形针在 Rails 应用程序中上传时裁剪视频和音频文件

http - 存储资源 ETag 的建议方法是什么?

file - 将大数据写入文件缓存问题

javascript - Angular 模板缓存不起作用

android - 改造 ETAG 和缓存