Estoy usando CloudFlare CDN en mi aplicación Rails 3.1. Cloudflare es un CDN que funciona en el nivel de DNS. En el primer golpe a un activo estático, CloudFlare lo carga desde tu aplicación y luego lo almacena en su CDN. Solicitudes futuras de esa carga de activos desde el CDN en lugar de su aplicación.¿Cómo evito que Rails 3.1 guarde en caché los activos estáticos en Rails.cache?
El problema que estoy teniendo es que si se configura el almacenamiento en caché del controlador en verdad:
config.action_controller.perform_caching = true
permite al Rack middleware :: Cache. Como Rails establece una configuración de control de caché predeterminada para los activos estáticos, esos activos se escriben en el almacén de Rails.cache. Como resultado, mi almacén de caché (en mi caso, redis) se está llenando con activos estáticos con la url como la clave de hash.
Lamentablemente, no puedo desactivar los encabezados de control de caché de activos estáticos sin afectar la forma en que Cloudflare y los navegadores de mis usuarios almacenan en caché los activos. No puedo desactivar el almacenamiento en caché del controlador o pierdo el almacenamiento en caché de la página/acción/fragmento. El mismo resultado si elimino el middleware Rack :: Cache.
¿Alguien tiene alguna otra idea?
Actualización: He abierto un ticket en GitHub here.
Cuando dice activos estáticos ¿quiere decir solo los archivos que genera Sprockets? –
Sí, lo hago. Con el hash agregado a los nombres de los archivos. –