¿Cómo puedo almacenar en caché mi controlador REST con Rails donde mis acciones tienen parámetros de cadena de consulta?Caché de acción de rieles con parámetros de cadena de consulta
Example: GET /products/all.xml?max_price=200
Thx!
¿Cómo puedo almacenar en caché mi controlador REST con Rails donde mis acciones tienen parámetros de cadena de consulta?Caché de acción de rieles con parámetros de cadena de consulta
Example: GET /products/all.xml?max_price=200
Thx!
Si desea almacenar en caché una acción, basada en todos los parámetros de consulta (o decir en casi todos ellos), que puede hacer:
caches_action :my_action, :cache_path => Proc.new { |c| c.params }
O, tal vez desea que todos pero algunos parametros que acaba de utilizar para Analítica (pero que no tienen relación con los registros de la que obtienes):
caches_action :my_action, :cache_path => Proc.new { |c| c.params.delete_if { |k,v| k.starts_with?('utm_') } }
En este caso se debe utilizar fragmentos de almacenamiento en caché:
en su controlador:
cache(params[:max_price], :expires_in => 10.minute) do
# get the result
end
Para utilizar la URL de solicitud como clave de caché hago algo como esto:
caches_action :index, :cache_path => Proc.new {|c| c.request.url }
Di la acción tiene nombre de usuario John y has almacenan en caché algunas versiones de esta basado en parámetros GET al azar aprobadas en ¿Hay alguna manera de invalidar el caché para la acción con el nombre de usuario john Y todas las versiones en caché con params? Ejemplo/john/picture? Dimension = 50 y/john/picture? Dimension = 100 ¿es posible borrar todas las versiones de la imagen de johns? – Marc
@Marc: Sí, consulte el espacio de nombres para ideas http://code.google.com/p/memcached/wiki/NewProgrammingTricks#Namespacing – randomguy
Esperemos que esto ayude a alguien: en Rails 3- cuando caduca un caché de acción que tiene parámetros personalizados, un formato definido, Y usted ha establecido la URL predeterminada para asegurar una barra inclinada, expire_action (: action =>: my_action,: param_1 => "val",: format =>: json), rails no usa la clave de caché correcta. En lugar de borrar la clave de caché /my_action.json/?param_1=val, borrará /my_action.json/?param_1=val.json debido a la forma en que infiere la extensión. https://github.com/rails/rails/blob/3-2-stable/actionpack/lib/action_controller/caching/actions.rb#L179 – jkelley