我见过的每个rails etag示例都非常简单,new_when方法被称为控制器中的最后一行。我试图理解fresh_when方法如何适用于具有资源密集型方法调用的控制器,如果页面仍然是新鲜的,我不想在请求中调用它。例如,
class NotesController < ApplicationController
etag { current_user.try :id }
def show
@note = Note.find(params[:id])
@note.do_some_expenisve_data_manipulation
fresh_when(@note)
end
end
如果自上次此用户更新后该笔记尚未更新,是否会调用@ note.do_some_expensive_data_manipulation?如果我把那条线放在fresh_when下方,它会被调用吗?谢谢!
答案 0 :(得分:1)
我觉得用陈旧?我更容易理解当时的新鲜感。这是一个例子。
if stale?(etag: @note, last_modified: @note.updated_at)
respond_to do |format|
format.html {
// do expensive work here
}
end
end