Rails Etag cache 迷惑

hlxwell · 2012年08月30日 · 最后由 ylt 回复于 2016年06月21日 · 2749 次阅读

ETag cache 和 if-last-modified 这类的 cache 无论如何都会出发 action,如果生成慢,还是等于没有缓存。 这个似乎只适用于下载大文件,etag 匹配就不下载了,也不触及任何 ruby 代码。

不用下载了呀,在静态文件上面非常又用处,小文件也又意义的

但是在 rails 里的 action 里写一些

if stale?(:last_modified => @product.updated_at.utc, :etag => @product)

就意义不是超级大。除非渲染页面需要超级久。

#2 楼 @hlxwell 这个没试过,看起来太复了,并且,页面的实际场景没这么简单的,还不如多花点时间优化执行速度

@hlxwell 对于流量大的网站或者用户网络不佳的情况,省下 http body 的渲染时间和网络传输时间也是很重要的

#4 楼 @flyerhzm 嗯。是的。

这里有几个时间当从服务器读取页面

  • etag 计算
  • 页面数据读取
  • 页面渲染
  • 网络传输

很多时候 etag 计算 已经比较复杂,因为你要遍历一些子元素啥的。

不过还是能够省下以下的时间:

  • 页面数据读取
  • 页面渲染
  • 网络传输

对于服务器大于 2 台的网站来说比较有用,对于小网站来说,开发速度第一啊。有时候加 etag 还不一定效果那么明显。

ylt Rails / Nginx 与 Weak Etag 提及了此话题。 06月21日 14:11
需要 登录 后方可回复, 如果你还没有账号请 注册新账号