Fastly , CloudFlare y algunas otras CDN ofrecen un modo en el que aceleran el contenido dinámico.
En resumen, apuntas la dirección IP de tu dominio a la CDN y la CDN decidirá de forma inteligente cómo gestionar la solicitud.
- El contenido estático se puede servir fácilmente desde la caché
- El contenido dinámico se puede dirigir al sitio.
Esto proporciona algunas ventajas sobre el envío de solo activos estáticos, lo cual se cubre en la guía de CDN.
- Puedes optar por el “escudo” (shielding) que protege tu sitio de los picos de tráfico.
- El contenido dinámico se puede acelerar utilizando técnicas como la compresión delta. (nota: en general, nuestra carga útil cabe en 1 RTT, por lo que esto tiene menos impacto)
- La negociación SSL puede realizarse en el borde, lo que reduce los viajes de ida y vuelta costosos para la negociación.
Si habilitas la aceleración completa del sitio con una CDN, es fundamental que sigas 3 reglas
-
El “bus de mensajes” (must) debe servirse desde el origen.
-
Necesitas configurar la confianza de X-Forwarded-For. Para Cloudflare, añade
cloudflare.template.ymla tu archivoapp.yml. -
Ten mucho cuidado con las técnicas que aplican optimización al sitio; cosas como Rocket Loader pueden impedir que Discourse funcione. Discourse ya está altamente optimizado, esto no es necesario.
Para servir las solicitudes de “sondeo largo” (long polling) desde un dominio diferente, establece la configuración oculta del sitio long_polling_base_url en el servidor de origen. Esto se configura mejor añadiendo la variable de entorno DISCOURSE_LONG_POLLING_BASE_URL en tu app.yml, o a través de la consola de Rails.
Por ejemplo, si tu sitio está en “http://forum.example.com”, debes configurar http://forum-direct.example.com/ para conectarte a la configuración del sitio. Si no lo haces, tu sitio se romperá.
Si estás utilizando Varnish como fachada para Discourse, probablemente querrás seguir el mismo truco aquí y omitir Varnish para las solicitudes del bus de mensajes.
Notas técnicas aburridas:
Lograr un bus de mensajes funcional en un dominio completamente diferente es bastante desafiante. Nuestro bus de mensajes conoce qué usuario está sondeando, el otro dominio puede no tener ninguna cookie configurada, por lo que sin cambios hay dos problemas. En primer lugar, ni siquiera puedes hacer solicitudes ajax estándar entre dominios sin una gran danza CORS.
En segundo lugar, necesitábamos un mecanismo para informar al otro dominio quién es el usuario para poder sondear la información correcta.
Cuando se cambia la URL base del sondeo largo, Discourse envía una etiqueta meta adicional que comparte un token de autenticación “entre dominios”. Este token se pasa utilizando una cabecera personalizada de vuelta al bus de mensajes. El token caduca después de 7 días o tan pronto como el usuario cierra la sesión.
Puedes ver la mayor parte de la implementación aquí: FEATURE: allow long polling to go to a different url · discourse/discourse@aa9b3bb · GitHub

