Django compressor

7
Introduction à django compressor Mathieu Pillard https://github.com/diox @dioxmat Rencontres django-fr, 16 avril 2011

Transcript of Django compressor

Page 1: Django compressor

Introduction à django compressorMathieu Pillardhttps://github.com/diox@dioxmat

Rencontres django-fr, 16 avril 2011

Page 2: Django compressor

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

Page 3: Django compressor

Principes

● Transparent pour les développeurs● De base, pas de commande de management à

lancer● Pas de « bundle » à créer dans les settings non

plus

Page 4: Django compressor

Fonctionnement de base

● Utilisation du templatetag {% compress %} : {% compress css %}<link rel=stylesheet type=text/css href= 1.css><link rel=stylesheet type=text/css href= 2.css><style type=text/css>.pony { color : pink ;}</style>{% endcompress %}

● Rendu :<link rel=stylesheet type=text/css href=<hash>.css

Page 5: Django compressor

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

Page 6: Django compressor

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

Page 7: Django compressor

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