¿Así que desea utilizar una CDN para acelerar el acceso mundial a los recursos comunes en su foro de Discourse? Es posible que desee ir a por todas y consultar Set up file and image uploads to S3 (consulte también Configure an S3 compatible object storage provider for uploads).
Si desea una CDN sin la complejidad adicional de S3 y tener dos CDNs, esta es la guía para usted. La CDN reducirá parte de la carga de su servidor al permitir que la CDN sirva esos activos para que el servidor no tenga que hacerlo. También puede acelerar las cosas al entregar los archivos desde una ubicación más cercana al usuario final.
Regístrese con la CDN de su elección: CDCK/discourse.org ha utilizado y recomienda encarecidamente Fastly.
La configuración se verá algo así:

Lo que está buscando son tres configuraciones principales:
-
La dirección de origen, que es la URL donde se encuentra actualmente su foro
discourse.example.com. Aquí es de donde la CDN extraerá todo su contenido original en la primera solicitud. -
El CNAME, que es el nombre “amigable” para su CDN que configurará en su DNS, por ejemplo,
discourse-cdn.example.com -
La URL de la CDN, que es el nombre “poco amigable” de dónde vendrán los activos de la CDN almacenados en caché a través de la red mundial de servidores distribuidos de la CDN. Se verá como
637763234.cdn-provider.com
Deberá editar su DNS para mapear el CNAME a la URL de la CDN, de la siguiente manera:
discourse-cdn.example.com IN CNAME 637763234.cdn-provider.com
(Una vez que haya editado el DNS, dele un poco de tiempo para que se propague).
La parte real de la configuración de Discourse es bastante sencilla. Descomente la línea de la CDN en su app.yml y actualícela con el CNAME que acaba de configurar en su DNS:
## La dirección http o https de la CDN para esta instancia de Discourse (configurada para extraer)
DISCOURSE_CDN_URL: https://discourse-cdn.example.com
La URL de la CDN debe incluir un protocolo (https:// o http://). Las URL relativas al protocolo (que comienzan con //) ya no son compatibles y harán que la compilación del contenedor se interrumpa.
(Si no ve esta línea en su app.yml, agréguela debajo de las otras variables DISCOURSE_)
Como con cualquier otro cambio en su app.yml, debe reconstruir el contenedor para reflejar los cambios:
./launcher rebuild app
Una vez que haya reconstruido, navegue a su instancia de Discourse en el navegador. Vea el código fuente y busque “cdn”. Verá que los activos de los sitios web ahora provienen de su CDN:
<script src="https://discourse-cdn.codinghorror.com/assets/preload_store-4ea79c2f435becca86ac97a9c038f9c7.js"></script>
<script src="https://discourse-cdn.codinghorror.com/assets/locales/en-7084a68855205a9128245d2d0ce94ed9.js"></script>
Este tema cubre el escenario más común de aceleración de activos estáticos. Consulte este tema para la aceleración de CDN de sitio completo (tanto de activos dinámicos como estáticos) (como la proporcionada por Cloudflare). Cloudflare funciona de manera diferente a una CDN tradicional, por lo que este no es un buen tema para discutir Cloudflare.
Otras CDN que se ha informado que funcionan incluyen:
- https://www.keycdn.com/ (CDCK desde los primeros días)
- MaxCDN (@sam: “CDN confiable” Ene 2017)
- StackPath (@Victor_Ashiedu Jun 2022)
- Bunny.net (@pfaffman 2023)
- Cloudfront (@pfaffman cree que CDCK usa ellos al menos para activos de S3)
- gcore.com? (@pfaffman se registró, pero no ha probado Abr 2023)