[Ror-es] memcached o edge Rails
Fernando Blat
ferblape at gmail.com
Sat Sep 15 05:55:14 GMT 2007
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.
On 9/14/07, alarkspur <alarkspur at gmail.com> wrote:
> Buenas
>
> Andaba realizando pruebas con el tema de la cache usando los módulos
> que ofrece rails [1] así como las incorporaciones que se han echo en
> edge [2] y buscando mas información sobre el tema doy con memcached [3].
>
> Y ahora la duda, que usar? que opinión les merece.
> ¿es memcached para aplicaciones "grandes" y cache_page para
> aplicaciones de "pequeñas" ?
>
> [1] http://api.rubyonrails.com/classes/ActionController/Caching/Pages/
> ClassMethods.html
> [2] http://ryandaigle.com/search?q=caching
> [3] http://www.danga.com/memcached/
>
> Gracias.
> Un saludo.
>
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
--
Fernando Blat
blog > http://www.inwebwetrust.net
More information about the Ror-es
mailing list