Passa al contenuto principale

Deployment di Siti Statici

Configurazione del connettore

In contesti puramente statici, il caching dell'api può portare ad avere un disallineamento tra i dati inseriti sulla piattaforma Discovery e quelli del sito, causati dalla presenza di dati in cache non ancora invalidati. È quindi bene configurare il connettore per evitare la cache dell'api e richiedere sempre gli ultimi dati, essendo il calo di performance circoscritto al processo di build. Per fare questo è necessario inserire nel setup il parametro disableCache: true. In contesti ibridi, con alcune pagine statiche e altre generate server-side, è importante evitare questa configurazione ed invece disabilitare la cache a livello della singola chiamata tramite le opzioni dei metodi getPage() e getContent().

Deployment tramite Webhook

Se il sito dev'essere distribuito tramite servizi quali Vercel, Netlify o equivalenti, che supportano webhooks, è possibile configurare nella pagina di dettaglio della property i webhook da invocare in caso di Deploy. Per ottenere la URL del webhook, verificare la documentazione del servizio terze parti. Una volta ottenuta la URL, va inserita nel pannello della property sotto Webhooks > Deploy Webhook URL/Method.

Per provare la configurazione, cliccare sul bottone Deploy all'interno della property e verificare sulla console del servizio terze parti che la build è stata avviata.

Deployment tramite AWS S3

Discovery CMS supporta sia siti dinamici sia siti statici. Se non è necessario alcun server-side page rendering, è possibile scegliere il deploy come HTML statico, con il vantaggio di elevate prestazioni a fronte di costi molto ridotti, in quanto il sito può essere completamente ospitato, ad esempio, su un bucket AWS S3 e accelerato con AWS CloudFront.

Se il tuo sito consiste in un elevato numero di pagine, ad esempio un e-commerce o un sito di notizie, Discovery CMS supporta il deployment incrementale: una volta creato il sito iniziale con una pagina generata per ogni prodotto/notizia (anche migliaia di pagine, che potrebbero richiedere ore per la compilazione), nei deploy successivi è possibile una generazione incrementale per le sole pagine che sono state modificate. Ad esempio, se vengono aggiornati 100 prodotti su 10.000, il Discovery CMS può generare soltanto le pagine per i 100 prodotti aggiornati.

Questo tipo di deployment dev'essere richiesto in fase di setup della piattaforma Discovery, comunicando "RIF_CMS_DEPLOY_S3_SETUP" ai Servizi Professionali Reply.

Configurazione della Property

E' possibile decidere il tipo di deployment, statico o dinamico, per ogni property accedendo alla pagina dei settings. Inoltre, è necessario creare uno script di deployment e collegare, sempre tramite le impostazioni, questo script alla property. Reply può offrire supporto per la creazione dello script di deployment.

Lo script riceverà una variabile d'ambiente LAST_DEPLOY_TIMESTAMP impostata dal Discovery CMS. Questa variabile è usata dall'applicazione NextJS per interrogare l'API del CMS e richiedere solo i contenuti cambiati dall'ultimo deployment.

Esempio di script:

#!bin/sh

npm run export --prefix /Projects/HeadlessCMS/headless-cms/discovery-frontend/mywebsite && aws s3 sync /Projects/HeadlessCMS/headless-cms/discovery-frontend/monorepo/sites/media-library-cms-static/out/. s3://media-library-cms-static && aws cloudfront create-invalidation --distribution-id EDFDVBD6EXAMPLE --paths "/*"

Lo script sopra:

  • esporta localmente il sito statico
  • lo carica sul bucket S3
  • invalida la distribuzione CloudFront che ha come origin il bucket S3

Siti statici Multilingua

TODO