Carriles - memoria caché de fragmentos no expira
-
23-08-2019 - |
Pregunta
Éste me ha dejado perplejos.
Tengo una vista con un fragmento en caché:
- cache :key=>"news" do
%h2 News
- etc
Tengo una barredora que utiliza:
def expire_home_cache
puts "expire_home_cache"
expire_fragment(:key => "news")
end
La barredora se llama como puedo ver "expire_home_cache" en la salida de la consola.
Sin embargo, el fragmento no se actualiza ...
¿Alguna idea?
Solución
Es posible que intente lo siguiente:
cache("news") do
%h2 News
- etc
end
y ...
def expire_home_cache
puts "expire_home_cache"
expire_fragment("news")
end
... o probar este ...
- cache({:key=>"news"}) do
%h2 News
- etc
Me refiero al problema puede ser que rubí o rieles está teniendo un tiempo difícil determinar cuál es la clave es exactamente lo que el método de caché y expire_fragment están generando dos claves de caché diferentes.
Otros consejos
Trate de reemplazar expire_fragment(:key => "news")
con ActionController::Base.new.expire_fragment(:key => "news")
No hay tiempo para explicar, pero funcionó para mí.
La forma correcta de hacerlo es:
cache :news do
...
end
Y luego, en su barredora:
expire_fragment :news
Esto no responde directamente a su pregunta, pero ¿ha probado el plugin de timed_fragment_cache como alternativa?
http://github.com/tricycle/timed_fragment_cache/tree/master
He encontrado que esto es una manera mucho más simple de expirar fragmentos en mis proyectos.