Memcached almacena datos pero Rails no los está utilizando
-
05-07-2019 - |
Pregunta
environment.rb:
config.cache_store = :mem_cache_store, '127.0.0.1', { :namespace => RAILS_ENV.to_s }
development.rb:
config.action_controller.perform_caching = true
Esta es la salida de memcached cuando llamo a la url.
obtener desarrollo: views / 127.0.0.1: 3000 / aktionen.xml enviando desarrollo de clave: views / 127.0.0.1: 3000 / aktionen.xml END desarrollo de conjuntos: views / 127.0.0.1: 3000 / aktionen.xml 0 60 3 ALMACENADO
Controlador
caches_action :index, :expires_in => 5.seconds, :layout => false, :format => :xml
Info
cache_pages no produce ninguna actividad de memcached. Rails escribe aktionen.xml en la carpeta pública, y también ignora los parámetros expires_in y format. Llamar a 127.0.0.1:3000/aktionen crea un archivo aktionen.html
Solución
Rails (a partir de 2.1) proporciona diferentes almacenes para los datos en caché creados por acciones y fragmentos de caché. Los cachés de página siempre se almacenan en el disco.
El almacenamiento en caché de acciones es MUY similar al almacenamiento en caché de la página, la única diferencia es que la solicitud de la página siempre afectará a su servidor de rieles y sus filtros siempre se ejecutarán. Para configurar el almacenamiento en caché de acciones, nuestro controlador podría tener este aspecto:
class BlogController < ApplicationController
layout 'base'
before_filter :authenticate # <--- Check out my authentication
caches_action :list, :show
Más información aquí: http: / /railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2
Otros consejos
¿Ha intentado aumentar la caducidad a algo más de 5 segundos, solo para asegurarse de que los datos no hayan caducado antes de poder comprobar su existencia?