1. Introduction à django compressor
Mathieu Pillard
https://github.com/diox
@dioxmat
Rencontres django-fr, 16 avril 2011
2. Présentation
● Application de « gestion » de medias...
●
… sans l'aspect gestion
●
Au départ juste une collection de filtres pour
django_compress
●
Documenté, testé, maintenu
● Résout la problématique de base de faire cacher
longtemps vos fichiers médias tout en permettant
de les expirer immédiatement quand ca change
3. Principes
● Transparent pour les développeurs
●
De base, pas de commande de management à
lancer
●
Pas de « bundle » à créer dans les settings non
plus
5. Ce que ca sait faire
● Changement automatique et à la volée du ou des fichiers résultat quand
les sources changent
● Filtres disponibles : Minification, Tidy, Closure, Transformation
automatique des urls en data URI ...
● « Pre-compilers » disponibles : LESS, Cofeescript, SASS
● Gère le suffixage des images dans les CSS
● Utilisation du cache django
● Utilisation des moteurs de stockage django pour le fichier résultat
● Commandes de management optionnelles pour générer en « offline »
plutôt que en live, ou générer un cache des dates de modification des
fichiers
6. Comment ca fonctionne derrière
● Vérification du cache « offline » avec un hash de la
nodelist brute. Si présent, retourne alors l'HTML.
● Instanciation d'un parseur (lxml/beautifulsoup),
détermine la liste des fichiers, utilise leur nom + date
de modif pour faire une clé unique
● Vérification du cache principal à partir de cette clé. Si
présent, retourne alors l'HTML.
● Génération du fichier, application filtres/pre-
compilers, génération d'un hash, écriture du fichier si
nécessaire, remplissage du cache, retourne l'HTML
7. Conclusion
● Utilisé en production sur les projets django de libération
● Le cache est obligatoire pour ne pas utiliser trop de
ressources, mais après, ca fuse !
● Plein de settings optionnels sympas
● Bien maintenu, pas mal de contributeurs, bien documenté
(comment ca je répète l'intro)
● Bref, c'est super, utilisez le ! :-)
● https://github.com/jezdez/django_compressor , disponible
aussi sur pypi