Afin d'optimiser au mieux nos serveurs pod, je vous invite à partager ce que chacun a pu mettre en place pour optimiser son serveur.
Si vous souhaitez savoir ou se situe votre serveur Pod en terme d'optimisation, je vous propose de le tester par exemple via PageSpeed :
https://developers.google.com/speed/pagespeed/insights
À titre de référence, le serveur pod.univ-lille.fr donne les scores suivants en février 2021 (pod v2.7.3.1) :
(plus le score est élevé, mieux c'est)
Avant toute optimisation, on avait les résultats suivants :
Au niveau d'nginx, voici ce qu'on a fait :
Avec ca, lorsque nginx trouve un fichier "file.css.gz" dans le dossier static, il l'envoie à la place de la version standard (le navigateur fera la décompression)
location /static { gzip_static on; gzip_types text/plain application/xml text/css text/javascript application/javascript image/svg+xml; [...] } |
Pour que ca marche bien, il faut bien sûr avoir des fichier ".gz", on lance donc manuellement un script shell :
#!/bin/bash # Generate compressed versions of all statics files to be served by nginx cd podv2/pod/static/ for file in $(find . -type f) do if [[ $file =~ .*\.(css|js|svg)$ ]] then gzip -fk "$file" fi done |
==> cette étape pourrait être inutile à partir du moment ou on installe https://github.com/whs/django-static-compress
pour optimiser la bande passante, on peux aussi améliorer les perfs en demandant à nginx de compresser à la volée les contenus textuels. voici ce qu"on a ajouté à pod_nginx.conf :
# Django media location /media { gzip on; gzip_types text/vtt; [...] } [...] # Finally, send all non-media requests to the Django server. location / { gzip on; uwsgi_pass django; [...] } |
nb : pour que les fichiers vtt soient reconnus comme texte, on les a ajoutés comme "text/vtt" dans /etc/ningx/mime.types
3. Mise en cache
Nous avons défini la politique de mise en cache suivante (1 an sur /media, 60j sur /static) :
Pour plus d'infos sur l'importance de définir des "expires", je vous invite à suivre cette doc : Éviter les mises en cache de durée imprévisible des fichiers statiques
location /media { expires 1y; add_header Cache-Control "public"; [...] } location /static { expires 60d; add_header Cache-Control "public"; [..] } |
==> avec l'ensemble de ces changements, on est passé d'un score de 22/57 à 40/77 (mobile/desktop) à Nice
Sur la page d'accueil, on est aujourd'hui à 81%/95%