SlideShare une entreprise Scribd logo
Introduction à django compressor
             Mathieu Pillard
             https://github.com/diox
             @dioxmat




Rencontres django-fr, 16 avril 2011
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
Principes
●   Transparent pour les développeurs
●
    De base, pas de commande de management à
    lancer
●
    Pas de « bundle » à créer dans les settings non
    plus
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
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
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
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

Contenu connexe

PDF
PHP et Performances - AFUP 2005
PDF
RMLL 2014 - Site statique avec Templer, Bootstrap et Git
PDF
Les performances sur des développements PhP
ODP
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
PDF
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
PPTX
[#1] Qu’est ce que php?
PDF
Geek Time Juin 2016 : Node.js
PPTX
ça marchait pourtant en dev
PHP et Performances - AFUP 2005
RMLL 2014 - Site statique avec Templer, Bootstrap et Git
Les performances sur des développements PhP
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[#1] Qu’est ce que php?
Geek Time Juin 2016 : Node.js
ça marchait pourtant en dev

Tendances (9)

PDF
Optimiser wordpress
PDF
Optimiser WordPress
PPTX
Réduire la taille de son apk
PDF
Mongodb introduction
PDF
Accélération des pages Web : les bases en exemple
PDF
Human Talks Jasmine
PPTX
Ma boîte à outils DevOps
ODP
Puppet slides
PDF
Plop : un micro-générateur pour se simplifier la vie au quotidien
Optimiser wordpress
Optimiser WordPress
Réduire la taille de son apk
Mongodb introduction
Accélération des pages Web : les bases en exemple
Human Talks Jasmine
Ma boîte à outils DevOps
Puppet slides
Plop : un micro-générateur pour se simplifier la vie au quotidien
Publicité

En vedette (20)

PPT
Compressor
PDF
Bauer Compressor Use & Maintenance_Certificate
PDF
Basics of Compressor
PPT
Compressors
PPT
Reciprocating compressor
PDF
Luka Moro - This way - Paroles fr
DOCX
Climatiseur à recyclage d’énergie
PDF
Extreme JavaScript Compression With YUI Compressor
RTF
B aby
PDF
Curriculum Vitae (F) - GARCIA, Rocio Soledad
PPT
Compressor And Compressed Air Systems
PDF
Compte rendus de la journée final v5
PDF
Compte rendus de la journée le libre accès à l’information scientifique, Univ...
PPTX
Romeo & juliet themes lesson
PPTX
Water Chilled Airconditioning
PPTX
Fate of pyruvate - A quick review
PDF
WordPress State of the Word 2012
PDF
Scène + fiche tech + rider fi.she.s
PDF
Catalogue Beauté ALUMINÉ - Vinsalow partners
PPTX
Industrial Air Compressors, Air Compressor Manufacturers Ahmedabad
Compressor
Bauer Compressor Use & Maintenance_Certificate
Basics of Compressor
Compressors
Reciprocating compressor
Luka Moro - This way - Paroles fr
Climatiseur à recyclage d’énergie
Extreme JavaScript Compression With YUI Compressor
B aby
Curriculum Vitae (F) - GARCIA, Rocio Soledad
Compressor And Compressed Air Systems
Compte rendus de la journée final v5
Compte rendus de la journée le libre accès à l’information scientifique, Univ...
Romeo & juliet themes lesson
Water Chilled Airconditioning
Fate of pyruvate - A quick review
WordPress State of the Word 2012
Scène + fiche tech + rider fi.she.s
Catalogue Beauté ALUMINÉ - Vinsalow partners
Industrial Air Compressors, Air Compressor Manufacturers Ahmedabad
Publicité

Django compressor

  • 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
  • 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. 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