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 计算 已经比较复杂,因为你要遍历一些子元素啥的。
不过还是能够省下以下的时间:
对于服务器大于 2 台的网站来说比较有用,对于小网站来说,开发速度第一啊。有时候加 etag 还不一定效果那么明显。