mod_deflate vs Django GZipMiddleware, lequel utiliser pour le déploiement?

Nous déployons des applications Django avec Apache 2.2 + mod_wsgi. Devrions-nous activer mod_deflate dans Apache ou utiliser GZipMiddleware de Django? Quelle option fonctionne mieux?

Vous devriez probablement tester pour savoir avec certitude, mais si je devais deviner, mod_deflate serait mieux pour les requêtes qui contournent totalement Django (comme les ressources statiques compressées qui devraient être déployées séparément, par exemple les médias).

Pour les choses qui sont déjà générées par les réponses Django, il s’agit probablement d’un lancement – dans les deux cas, il s’agirait d’un code natif effectuant la compression.

Ça dépend. Si vous l’activez dans Apache, il sera également utilisé pour du contenu statique (par exemple, CSS, Javascript, images); mais certains contenus statiques (tels que JPG, GIF, SWF) sont plutôt bien compressés.

mod_deflate est un meilleur choix car il vous permet de choisir quels types de contenu sont compressés (par défaut, html, css et js).

GZipMiddleware est très naïf et essayera de compresser n’importe quoi et vérifiera simplement si le résultat est plus petit que la réponse originale. Si vous diffusez des images de cette manière, vous obtiendrez des performances optimales pour chaque requête avec 0 avantage.

Je serais certainement aller avec mod_deflate, en supposant que vous avez des fichiers css et js statiques que apache sert directement et peut également être compressé.