Hola,
creo que tienes un poco de lío con el tema de cachés:
Por un lado están las cachés que incorpora Rails:
1 - caché de página: guarda el resultado de tu petición en un HTML
estático que servirá el servidor web la próxima vez que alguien pida
la misma URL
2 - caché de acción: ídem, pero no la sirve el servidor web, sino que
lo hace Rails. Esto permite preprocesar la caché y hacer sustituciones
o no servirla en caso que no se cumpla una condición, etcétera
3 - caché de fragmentos: cachea una parte del HTML de la respuesta. En
una página tú indicas fragmentos como bloques, y el contenido del
bloque es el fragmento a cachear.
Para [2] y [3], como es Rails el que las genera, existe la posibilidad
de guardar la caché en disco o en memcached, ideal cuando quieres
evitar problemas de uso excesivo de disco.
Como ves, [1], [2] y [3] son a nivel de controladores, acciones y
vistas.
A nivel de modelo de datos también se puede utilizar memcache, para
guardar el resultado de los accesos a base de datos utilizando el
objecto Cache como interfaz. Ejemplo:
Cache.set({:sql => ‘tags’}) = Tag.find_all_by_blog_id(3)
Y para recuperarlo basta con hacer Cache.get
Más información: http://nubyonrails.com/articles/memcached-basics-for-rails
Y por último, a lo que te refieres de nuevo en edge es caché de
consultas SQL, pero a nivel interno de ActiveRecord, que no está en la
mano del programador. Esa caché guarda las últimas consultas
realizadas y sus resultados.
Por ejemplo, cuando tenemos relaciones has_many es muy común llamar
constantemente al objeto A que tiene a muchos objetos B. Con query
cache se evita que el A se cargue todas las veces de base de datos.
Si te interesa, han hecho un plugin con esa funcionalidad para Rails
1.2+: http://agilewebdevelopment.com/plugins/query_cache
Espero que te sirva.
Un saludo.