2012-07-23 6 views
8

que tienen una gran cantidad de fragmentos en caché en mi página web porque el uso de la caché de fragmento con action_suffix utilizar el almacenamiento en caché en mi plantilla de aplicación. Im usar esto para el navigatin por ejemplo, ... como esto:teclas de lista de todos los fragmentos en caché

<% cache(:action => params[:action], :action_suffix => "navigation_#{request.path}") %> 
    <%= render 'navigation_entries/navigation' %> 
<% end %> 

Su trabajo bastante bien, pero ahora tengo un pequeño problema con vencimiento los fragmentos almacenados en caché. Lo que necesito es una lista de todas las claves para los fragmentos almacenados en caché. Tenía más que solo un vistazo a la documentación pero no encontré nada.

¿Hay una manera de enumerar todas las claves de fragmentos?

+0

¿qué tienda de caché está utilizando? –

+0

No he especificado ninguna tienda de caché desviada así que estoy usando la memoria caché predeterminada – davidb

Respuesta

6

puede pasar un Regexp-expire_fragment:

expire_fragment(%r{navigation_}) 

De acuerdo con los documentos

Regexp de vencimiento sólo es compatible con las memorias caché que puede iterar sobre todas las teclas (a diferencia de memcached).

+0

gracias eso es genial! – davidb

6

No hay ningún método que pueda encontrar en la memoria caché de los raíles para enumerar todas las claves, sin embargo, si está utilizando la caché de archivos predeterminada, puede enumerarlos buscando en el sistema de archivos. Cuando en los carriles predeterminados dir en UNIX/Linux se puede usar algo como esto para ver todos los archivos de caché (el nombre de las teclas de dirección URL codificada):

find ./tmp/cache -type f 

O esto a descodifica y tiras directorios así:

find ./tmp/cache -type f | xargs ruby -e 'require "cgi";puts CGI::unescape(ARGV.sort.join("\n")).gsub(/.*tmp\/cache\/\w*\/\w*\//,"")' 

usando una expresión regular para eliminar le permitirá eliminar la mayoría de las teclas, pero para la depuración es bueno a veces para ver las teclas reales que almacenas si está utilizando claves complejas.

Cuestiones relacionadas