L’integrazione di Django con una Content Delivery Network (CDN) può migliorare notevolmente le prestazioni del tuo sito web. Una CDN è una rete di server distribuiti in tutto il mondo che memorizzano e servono copie dei tuoi file statici (come CSS, JavaScript e immagini) ai visitatori più vicini possibile.
Uno dei modi più comuni per integrare Django con una CDN è utilizzare un servizio di storage S3 come Amazon S3 insieme a un servizio CDN come Amazon CloudFront. Django-storages è uno dei pacchetti Python che semplifica l’integrazione tra Django e questi servizi.
Secondo la documentazione ufficiale di Django, ecco come fare:
1. Installa django-storages e boto3 con pip.
2. Aggiungi ‘storages’ alla tua variabile settings.py INSTALLED\_APPS.
3. Configura l’opzione di storage predefinita in settings.py per utilizzare S3.
```
DEFAULT_FILE_STORAGE = ‘storages.backends.s3boto3.S3Boto3Storage‘
STATICFILES_STORAGE = ‘storages.backends.s3boto3.S3Boto3Storage‘
```
1. Definisci le tue credenziali AWS e la posizione del bucket nel tuo file settings.py come segue:
```
AWS_ACCESS_KEY_ID = ‘il tuo access key id‘
AWS_SECRET_ACCESS_KEY = ‘la tua secret access key‘
AWS_STORAGE_BUCKET_NAME = ‘nome del tuo bucket‘
```
1. Infine, è necessario configurare il tuo servizio CDN per utilizzare il tuo bucket S3 come origine. Con CloudFront, questo si traduce nel creare una nuova distribuzione e impostare l’URL del bucket S3 come origine dei file.
Quando configuri la tua CDN, assicurati di attivare la compressione dei file per ridurre ulteriormente i tempi di caricamento della pagina.
Un altro metodo per servire i file statici e media su Django attraverso una CDN è utilizzare WhiteNoise. WhiteNoise permette alla tua applicazione web di servire i suoi propri file statici, rendendo più semplice distribuire siti Django senza bisogno di un CDN o di un bucket S3 separato. Per integrare WhiteNoise con Django, segui le istruzioni nella documentazione di WhiteNoise e nella documentazione Django Project Static Files.
Ecco una lista dei link delle fonti utilizzate:
1. Documentazione Django:
2. django-storages:
3. boto3:
4. WhiteNoise:
5. Django Project Static Files: