Carriles pregunta acción de almacenamiento en caché
-
15-10-2019 - |
Pregunta
No estoy muy seguro de cómo asegurar mi caché está trabajando, pero estoy bastante seguro de que no lo es. Tengo un controlador de usuarios con una acción índice que estoy almacenamiento en caché de la acción hasta que se crea un nuevo usuario. Aquí está el código:
UsersController < ApplicationController
caches_action :index
def index
@users = User.all
end
def create
expires_action :index
...
end
end
Ahora, en los registros de mi cuando accedo a la acción index
, veo:
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.
No estoy seguro de lo que el filter chain halted ... did_not_yield
se trata y también veo que select * from users
que ... se está llamado cada vez, que no es lo que esperaba.
Puede alguien me ilumine en cuanto a lo que está pasando aquí y por qué esto no se está comportando como me esperaba? es decir. por qué el User.all estaría funcionando cuando la salida de que toda acción debe haber sido almacenado en caché?
Solución
Los medios de mensajes filter chain halted
que hay un filtro de alrededor que se detiene la acción de llamar. Esto es probable que sea el caché de la acción, que detiene la acción real del suceso. No lo hizo rendimiento a la acción, porque encontró algo en la memoria caché, como se sugiere en el mensaje por encima de ella.
El User.all
no debe hacerse funcionar en absoluto, porque está en la acción, pero ninguna antes filtros conseguirá ejecutar. Si la página está detrás de algún tipo de autenticación, que la comprobación de autenticación podría haber desencadenado la llamada SQL. Así que es posible que desee volver a comprobar que el registro de SQL realmente viene.
Además, la sintaxis apropiada (de acuerdo con los carriles de guía al menos) por cumplir es:
expire_action :action => :index
Más información: raíles de guía