IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Compression gzip en 2 lignes de code!


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut Compression gzip en 2 lignes de code!
    Bonjour tout le monde.

    je me torture le cerveau depuis hier pour mettre en place une compression gzip chez 1and1 pack Unlimited +
    Il s'avere que 1and1 ne permet pas cette operation directement depuis le .htaccess qui rend les choses plus compliquées. mais j'ai decouvert sur un site que ca peut se faire avec 2 lignes en PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ob_start("ob_gzhandler");
    register_shutdown_function("ob_end_flush");
    j'avoue que j'ai un peu de mal a croire que ces 2 lignes font l'affaire!

    est ce que ca donne le meme resultat?

    Merci

    P.S. sympa la nouvelle interface developpez

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    devrais-je plutôt poster dans la rubrique PHP ??

  3. #3
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Il semble que cela encode bien le contenu de la page généré par PHP.

    Par contre, cela n'encodera pas les fichiers statiques (css, javascript, images,...)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Merci Marc pour ta reponse

    oui, j'aavais remarque que ca n'encode pas les fichiers js et css.
    J'ai par contre trouve ce tuto que j'ai testé et qui a l'air de bien marcher si cela interesse quelqu'un:
    http://www.fobec.com/tuto/1114/compr...hez-1and1.html

    j'ai aussi trouvé ce bout de code que je dois placer juste avant le premier affichage HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler");
    else ob_start();
    1- quelle est la difference et quelle version preferes tu?
    2- est il recommandé d'encoder les images aussi ou juste les mettre en cache suffirait?
    3- j'ai aussi vu dans certain script qu'il faut ajouter header('Content-Type: text/html; charset=UTF-8'); juste apres le ob_start("ob_gzhandler"); faut il l'ajouter?

    MErci

  5. #5
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    2 - L'encodage en lui-même est déjà facultatif.... A moins d'avoir un site qui ait tellement de traffic qu'il sature ta bande passante, je ne vois aucune utilité à la compression. A part te prendre de la CPU, tu te compliques beaucoup le code pour vraiment pas grand chose.....
    3 - Dans le tuto que tu as suivi, l'ajout du header est déjà décrite. Tu peux t'en inspirer.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    MErci encore une fois

    et sinon qu'en dis tu de la question 1??

    concernant le header de la question 3, je voulais savoir s'il faut rajouter les headers aussi apres le ob_start() qui permet de compresser la page en elle meme!

  7. #7
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Pour moi, dans tous les cas, le header n'est pas compressé....
    C'est le contenu de la trame HTTP qui l'est.
    Inspire toi vraiment du script présent dans le tuto que tu as trouvé.
    Il est clair et permet d'en déduire le fonctionnement de la compression en PHP.

    Pour ce qui est la question 1, la différence entre quoi et quoi ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    pour la question 1, je voulais savoir quelle est la difference etre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ob_start("ob_gzhandler");
    register_shutdown_function("ob_end_flush");
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler");
    else ob_start();

  9. #9
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Dans le deuxième cas, tu vérifie d'abord que le navigateur accepte la compression.
    S'il n'est pas compatible, tu ne compresses pas.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    la condition, je l'avais bien compris
    mais je voulais savoir si le register_shutdown_function("ob_end_flush"); change quelque chose ou s'il est primordial a ajouter..

  11. #11
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Tout ça est expliqué dans la doc PHP.
    Si tu utilises ob_start, tu dois finir ton script avec ob_end_flush.

    Le fait d'utiliser register-shutdown-function te permet de ne pas oublier ob_end_flush en fin de script. Il est automatiquement appelé à la fin.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    OK merci.

    J'aurais 2 dernieres question stp:
    1- j'ai mis en place le script decrit dans le tuto. est ce que le fait de gziper une page en SSL ainsi que ses fichiers .css et .js est deconseillé??
    2- je mets en cache toutes les images du site. Il m'arrive parfois de modifier quelque photos dont sprite.png qui contient plein d'icones... quel est le meilleur moyen d'afficher l'image mise a jour apres qu'elle ait ete mise dans le cache??

    MErci

  13. #13
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    1/ Non ça n'est pas déconseillé.
    2/ Quel cache utilises-tu ? mod_cache ou un outil dédié comme Squid ou Varnish ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    1. merci
    2. j'utilise mod_expires. j'ai mis le code suivant dans le htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <IfModule mod_expires.c>
    	# Enable expirations
    	ExpiresActive On
     
    	# favicon
    	ExpiresByType image/icon "access plus 1 year"
    	ExpiresByType image/x-icon "access plus 1 year"
     
    	# Images
    	ExpiresByType image/gif "access plus 1 month"
    	ExpiresByType image/png "access plus 1 month"
    	ExpiresByType image/jpg "access plus 1 month"
    	ExpiresByType image/jpeg "access plus 1 month"
    </IfModule>

  15. #15
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Ah oui alors là ça va être compliqué parceque avec mod_expire, tu indiques au navigateurs que ta ressource peut rester dans le cache du navigateur pendant 1 an pour les icônes et 1 mois pour les images....

    Une fois dans le cache du navigateur, tu n'as plus la main, c'est le navigateur qui attendra 1 an ou 1 mois pour renouveler la ressource.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    as tu une meilleure methode pour mettre en cache les images? et biensur sans avoir a modifier tous les scripts...

    je precise encore une fois que les images se modifient tres rarement.

  17. #17
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Je préfère utiliser un vrai cache type squid ou varnish.

    L'avantage, c'est que tu as la main sur le cache dans ce cas. TU peux le vider au besoin ou rafraichir une image, un css,...
    De plus varnish et squid mettront en cache aussi les fichiers javascript, css,....

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Merci pour ce tuyau, je regarderai cela de plus pres demain.

    concernant les .js et .css, j'utilise le script que j'ai mentionné au debut qui permet a la fois de gziper et les mettre en cache...

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    j'ai regardé pour squid et varnish. je ne suis pas sur de pouvoir mettre en place un tel system, ca remettra tout en cause. et puis est ce faisable en mutualisé??

  20. #20
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Ah non effectivement, j'avais un peu oublié la contrainte du mutualisé....

    Mais du coup pourquoi vouloir jouer avec du cache en mutualisé sachant que ton hébergeur 1and1 a sûrement déjà un système de cache en front de la plateforme....

Discussions similaires

  1. activer/désactiver la compression GZIP des pages
    Par iubito dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 20/08/2008, 21h35
  2. Comptabiliser les lignes de code d'un projet
    Par JPigKeud dans le forum Qualimétrie
    Réponses: 5
    Dernier message: 07/01/2005, 14h09
  3. [Debutant(e)]ligne de code sous eclipse
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/01/2005, 17h37
  4. [netbeans][Linux] Nombre de lignes de codes
    Par sylvain_neus dans le forum NetBeans
    Réponses: 5
    Dernier message: 13/08/2004, 10h09
  5. Calculeur de ligne de code
    Par Bernybon dans le forum Autres éditeurs
    Réponses: 9
    Dernier message: 05/03/2004, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo