Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Django compressor

2,117 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Django compressor

  1. 1. Introduction à django compressor Mathieu Pillard https://github.com/diox @dioxmatRencontres django-fr, 16 avril 2011
  2. 2. Présentation● Application de « gestion » de medias...● … sans laspect 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. 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
  4. 4. 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
  5. 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. 6. Comment ca fonctionne derrière● Vérification du cache « offline » avec un hash de la nodelist brute. Si présent, retourne alors lHTML.● Instanciation dun 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 lHTML.● Génération du fichier, application filtres/pre- compilers, génération dun hash, écriture du fichier si nécessaire, remplissage du cache, retourne lHTML
  7. 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 lintro)● Bref, cest super, utilisez le ! :-)● https://github.com/jezdez/django_compressor , disponible aussi sur pypi

×