Avr
29
2012

Activer la-compression gzip et PHP5 sur un hebergement mutualisé

Hi everybody,

Il y a quelques années d’ici j’avais un hébergement chez 1&1 et celui-ci n’avais pas de la compression Gzip d’activer pour des fichiers HTML , CSS, JS …

C’était donc relativement embêtant d’un coté performance/optimisation, en PHP il y a bien la fonction « ob_start » qui permet de gzip le transfère de la ressource mais pas dans un fichier statique.
Exemple:


En cherchant un peu sur le net j’avais trouvé une solution assez sympa mais un peu lourde (qui comprenais une énorme faille de sécurité) , étant un vrai Open-sourceur j’ai donc reporter l’erreur en la corrigeant. Cependant depuis le site mb-creations est devenu OUT.

Je me permet donc de publier ce billet afin que cette astuce reste disponible sur internet.

Il faut rajouter cette règle-ci dans le .htaccess:

# BEGIN GZIP

RewriteEngine On
RewriteRule (.*)\.(css|js|xml|txt|)$ /media.php?file=$1.$2 [L]

# END GZIP

Et ajouter le script « media.php » dans la racine de votre hébergement:


Voilà faite en bonne usage !

17 commentaires + Ajouter un commentaire

  • […] Activer la-compression gzip et PHP5 sur un hebergement mutualisé […]

  • Merci pour ton astuce 😉

  • Salut,

    Je cherchais l’astuce mais effectivement le site MB CREATIONS n’existe plus. C’est donc avec bonheur que j’ai trouvé l’info sur ton blog mais peux-tu expliquer l’histoire du media.php ?

    Je suppose que le fichier contient le code nécessaire à l’encryption des données ? si oui, tu peux mettre le code source ou le proposer en téléchargement ?

    Merci 🙂
    Jérémy

    • Bonjour Jeremy,

      Le code PHP a été reposté 😉

      A+

  • Je dois être aveugle mais je ne le vois pas 🙂
    Merci en tout cas!

    • Le cache CloudFlare n’a pas encore rafraichi la page, je te donne le code via les commentaires :

      < ?php
      $parts = explode('.', $_GET['file']);
      $extension = $parts[count($parts) - 1];
      switch ($extension) {
          /* Mise à jour de sécurité suite au commentaire de Quentin_C */
          case 'php':
              exit(0);
              break;
          case 'css':
              $contentType = 'text/css';
              break;
          case 'js':
              $contentType = 'text/javascript';
              break;
          case 'xml':
              $contentType = 'text/xml';
              break;
          case 'htm':
          case 'html':
              $contentType = 'text/html';
              break;
          default:
              $contentType = 'text/plain';
              break;
      }
      if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
        ob_start("ob_gzhandler");
      else ob_start();
      
      if (file_exists($_GET['file']))
      {
      	header("Last-Modified: " . gmdate("D, d M Y H:i:s",time()-36000) . " GMT");
      	header("Content-type: $contentType; charset: UTF-8");
      	echo (file_get_contents($_GET['file']));
      	ob_end_flush();
      }
      else
      {
      	header("HTTP/1.0 404 Not Found");
      }
      

      Voilà 😉

  • Bravo, ça marche très bien! Il faut juste ne pas oublier de mettre le ?> à la fin et supprimer l’espace entre le < et le ?php au début. C'est évident mais ça coûte rien de le dire 🙂

  • Un grand merci, cela fait des semaines que je cherchais à compresser mes CSS.
    Et merci a Jacques pour ça précision!

  • Merci beaucoup pour cette astuce qui permet de compresser des pages sur serveur mutualisé Amen.

    • @Gestion crise : comment as-tu fait sur ton serveur mutualisé Amen ? As-tu fait quelque chose d’autre que l’ajout du code dans le .htaccess et la création du media.php. As-tu des pages statiques sur ton site ou dynamiques (je n’ai aucune page dynamique) ? Pour ma part, plusieurs heures que je tente d’implémenter cette solution (support Amen peu aidant), mais cela ne marche toujours pas.

      • Personnellement je n’ai pas d’hébergement amen … :'(

  • @Gestion crise, si tu passes sur le site, ma question reste en suspens car chez moi, toujours pas possible de fonctionner. Support niv.2 d’Amen vient de m’indiquer un lien des directives Apache interdites chez eux: https://controlpanel.amen.fr/.legacy/hosting/web/info_htaccess.html
    Certainement intéressant à connaître avant de s’escrimer sur certaines solutions.
    Leur solution: ‘renommer tous les fichiers html en .php et rajouter la ligne suivante en début de chaque fichier: ‘.
    Merci toute la réecriture des pages, leur renommage, la question des fichiers de styles et scripts, et la réindexation dans les moteurs…
    @Xooot: jusqu’ici, je lisais beaucoup de gens se plaindre d’Amen, alors que perso, 3 hébergements de sites commerciaux chez eux depuis 7ans en mutualisé / Linux, et tout allait. Cette année, j’ai commencé à prendre de l’Ovh pour de nouveaux sites. On verra ce qu’eux donnent.

    • Problème résolu. Et l’utilisation du script media.php avec la modif de .htaccess fonctionne effectivement sur Amen mutualisé sous Linux. Un doublon de RewriteEngine On qui trainait et qui empechait le bon fonctionnement. Comme quoi il n’est pas bon de bosser trop tard avant de se coucher. Merci pour la solution!

  • Bonjour, et merci beaucoup pour ce partage

    le résultat de votre compression est-il le meme qu’avec cet ajout dans htaccess :
    AddOutputFilterByType DEFLATE application/javascript text/css

    ?

    merci

  • pour activer gzip chez amen, contacter moi, je vais vous aider pour compresser des pages sur serveur mutualisé Amen.

    • Bonjour Alex

      Je cherche depuis 2 jours à activer gzip chez amen en vain, suite à votre proposition d’aide, je me permet de vous demander comment vous avez procéder ?

      Merci

      Bon week end

      Cordialement

      • Salut Bernard,
        please dis moi, tu es sur l’hébergement Linux ou Windows?
        merci

Laisser un commentaire

*