Вопрос

Я не совсем уверен, как убедиться, что мое кэширование работает, но я уверен, что это не так. У меня есть контроллер пользователей с индексным действием, которое я кэширую действие, пока не будет создан новый пользователь. Вот код:

UsersController < ApplicationController
  caches_action :index
  def index
    @users = User.all
  end

  def create
    expires_action :index
    ...
  end
end

Теперь в моих журналах, когда я получаю доступ к index действие, я вижу:

Cached fragment hit: views/localhost:3000/users (0.0ms)
Filter chain halted as [#<ActionController::Filters::AroundFilter:0xe2fbd3 @identifier=nil, @kind=:filter, @options={:only=>#<Set: {"index", "new"}>, :if=>nil, :unless=>nil}, @method=#<Proc:0x186cb11@/Users/bradrobertson/.rvm/gems/jruby-1.5.3/gems/actionpack-2.3.10/lib/action_controller/caching/actions.rb:64>>] did_not_yield.

Я не уверен, что filter chain halted ... did_not_yield все о чем и я вижу, что select * from users... каждый раз называют, что я не ожидал.

Может ли кто -нибудь просветить меня в отношении того, что здесь происходит и почему это не ведет себя так, как я ожидал? т.е. Почему пользователь. Все будут работать, когда все это вывод этого действия должен был быть кэширован?

Это было полезно?

Решение

А filter chain halted Сообщение означает, что есть вокруг фильтра, который мешает вызову действия. Это, вероятно, будет кеш действий, который останавливает реальное действие. Это не так урожай к действию, потому что оно нашло что -то в кэше, как предложено сообщение над ним.

А User.all Не следует запускать вообще, потому что оно в действии, но любые до того, как фильтры будут запускаться. Если ваша страница стоит за какой -то формой аутентификации, проверка аутентификации могла бы вызвать вызов SQL. Таким образом, вы можете дважды проверить, откуда на самом деле берется журнал SQL.

Кроме того, правильный синтаксис (по крайней мере, в соответствии с руководством Rails) для истечения:

expire_action :action => :index

Больше информации: Руководство

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top