Compression GZip chez 1and1

Ayant choppé une infection je suis cloué @ home.

Du coup je vais vous raconter comment rendre dingue votre serveur Web. Pour vous Apache c'est du chinois ? Pour moi c'est du grec ancien. Allez tripoter votre serveur Web pour accroître ses performances vous excite ? Je m'en vais vous narrer alors comment faire...

• • •

Compresser ses fichiers de sortie quand le site Web est en mutualisé chez l'hébergeur 1and1

Si, comme moi, vous êtes hébergé chez 1and1 vous savez que la méthode habituelle, via un .hatccess n'a pas plus d'effet sur la réduction de la taille de vos fichiers de sortie que la baisse de la TVA sur le menu des restaurateurs.

IfModule mod_gzip.c mod_gzip_on Yes
mod_gzip_dechunk Yes mod_gzip_item_include file .(html?|txt|css|js|php|pl|jpg|png|gif)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
/IfModule

Comment compresser ses fichiers de sortie quand le site Web est en mutualisé chez l'hébergeur 1and1- mickey mouse en apprenti sorcier gzip est banni chez 1and1 : les modules Apache mod_deflate et mod_gzip ne sont pas installés.
Du coup, vous pouvez faire faire toutes les acrobaties à votre .htaccess, donner toutes les instructions PHP dans vos templates, nada, peanuts, zobi... , le serveur n'obéira pas.
C'est là que l'apprenti sorcier intervient.
Musique maestro !

De quoi allez-vous avoir besoin pour faire cette manipulation ?
De courage ou, à défaut, d'une bonne dose d'inconscience.
Prêt ? C'est parti :

  1. Jouons au Da Vinci Code
    Vous avez l'âme d'un Dan Brown ? Parfait : on va percer les secrets de votre serveur.
    Il s'agit de le repérer parmi les centaines de millions qui existent sur la planète.
    Ouvrez votre outil de codage habituel et créez un document PHP avec ces lignes de code :
    ? phpinfo(); ?
    Enregistrez-le sous le nom « phpinfo.php », téléchargez-le à la racine de votre site, pointez votre navigateur sur ce fichier (http:votredomaine.com/phpinfo.php et prenez votre loupe.
    Il s'agit de repérer dans cette page une ligne qui ressemblerait à ça :
    /kunden/homepages/69/d206389610/htdocs c'est dans la rubrique DOCUMENT_ROOT.
    C'est bon ? Vous l'avez ? Vous avez trouvé le chemin exact de votre serveur.
    Poursuivons.
  2. Ne vous prenez pas l'en-tête
    Toujours muni de votre outil de codage, créez un nouveau fichier PHP dans lequel vous collerez ces lignes
    
    $pathinfo=pathinfo($_ENV['SCRIPT_FILENAME']);
    $extension=$pathinfo['extension'];
    $offset = 60 * 60 * 24 * 30;
    if($extension=='css'){
    header('Content-type: text/css; charset=utf-8');
    header("Expires: ".gmdate("D, d M Y H:i:s", time() + $offset)." GMT");
    }
    if($extension=='js'){
    header('Content-type: text/javascript; charset=utf-8');
    header("Expires: ".gmdate("D, d M Y H:i:s", time() + $offset)." GMT");
    
    Grâce à cette en-tête HTTP on va dire aux navigateurs qu'ils vont recevoir des fichiers compressés et qu'ils doivent se démerder avec (les décompresser et afficher le contenu).
    Avec la valeur expires on va indiquer aux caches réseau qu'ils doivent impérativement recharger la page originale à la date indiquée (celle du serveur située dans la passé).
    Pour vous c'est du latin ? Cet extrait de la bible d'OpQuast va vous donner un cours accéléré :

    Configurer le serveur Web pour qu'il puisse gérer la mise en cache des éléments statiques et gérer - au niveau applicatif - la possible mise en cache des éléments dynamiques.

    En pratique, et en accord avec les spécifications HTTP le serveur devra envoyer les champs ETag , Date et Last-Modified correspondant respectivement à l'identifiant de la ressource, à la date de traitement de la requête et à la date de dernière modification de la ressource demandée. L'ensemble des dates étant au format GMT. Ces informations pouvant être complétées par les champs Content-Length et Expires si la taille en octets et la date d'expiration exacte du contenu sont connues.

    Enregistrez-le sous le nom de headers.php. Placez ensuite ce fichier dans un dossier que vous nommerez comme vous voulez.
    Pour l'exemple toutefois ce dossier se nommera webscripts. C'est bon ?
    Étape suivante :
  3. Emprisonnons l'Apache
    Maintenant c'est un fichier de commandes au serveur que vous allez créer.
    Placez ces lignes dans un document que vous nommerez php.ini (avec l'adresse du serveur que vous avez récupéré à l'étape et le nom du répertoire que vous avez créé à l'étape 2).
    output_handler = ob_gzhandler
    = auto_prepend_file / kunden/homepages/69/d206389610/htdocs/webscripts/headers.php

    La première ligne indique au serveur que vous voulez utiliser l'outil de compression de PHP pour traiter les fichiers JS et CSS tels qu'indiqué dans le fichier headers.
  4. Domestiquons l'Apache
    Ouvrez maintenant votre fichier .htaccess et ajoutez cette ligne :
    AddType x-mapp-php5. Php. Shtml. Html. Htm. Js. Css. Txt
    Vous n'êtes pas obligé d'utiliser PHP5 mais cela vous sera sans doute utile pour d'autres bidouilles plus tard.
    Si vous voulez rester en PHP4 il suffit de l'indiquer ainsi : x-mapp-php4. Mais bien sûr vous l'aviez deviné car vous êtes un as.

C'est bon ? C'est fini ? Ça marche ?
Comment ça vous n'en savez rien ?
Vous pouvez le vérifier avec ces services en ligne :

  1. Pour voir les en-têtes HTTP que renvoie votre serveur, rendez-vous sur Web-Sniffer.
    Le service vous dira des mots doux tels que ceux-là :
    HTTP Status Code: HTTP/1.1 200 OK
    Date:	Tue, 24 Nov 2009 10:57:43 GMT	
    Server:	Apache	
    Cache-Control:	no-store, no-cache, must-revalidate, post-check=0, pre-check=0	
    Content-Encoding:	gzip	
    Expires:	Thu, 19 Nov 1981 08:52:00 GMT	
    Pragma:	no-cache	
    Vary:	Accept-Encoding	
    X-Powered-By:	PHP/5.2.11	
    X-Robots-Tag:	index,noarchive	
    Connection:	close	
    Transfer-Encoding:	chunked	
    Content-Type:	text/html
    
  2. Pour vérifier que vos fichiers sont bien compressés allez sur GIDNetwork.
    Faites un test sur l'un de vos pages ; vous devriez obtenir un résultat tel que celui-ci :
    Web page compressed?  	Yes
    Compression type? 	gzip
    Size, Markup (bytes) 	24,151
    Size, Compressed (bytes) 	7,784
    Compression % 	67.8
    

Épatant non ?
Pour ne rien vous cacher je n'en sais rien encore. Les en-têtes HTTP sont corrects. La compression s'effectue bien sur les fichiers.
Mais j'ai fait une bidouille en plus (que nous verrons dans l'article qui suivra) et, ces 2 derniers jours, mon service de surveillance WoozWeb m'a indiqué que mon serveur avait pédalé dans le « yogurt » à plusieurs reprises. Ce qui ne va pas plaire à 1and1.
Je verrais dans les prochains jours si ma bidouille en plus est une bidouille en trop.
Cet article a été intégralement pompé sur celui d'un mec qui s'y connaît, mrrena.

Lien


HTLML 5 et CSS 3 blog


Commentaires :

Patrice||#1
Patrice
Merci merci beaucoup. C'est exactement ce que je cherchais.
franckie||#2
franckie
Tout simplement génial. Merci. Le gain en rapidité se voit à l'oeil nu. lol
Christian Vannote||#3
Christian Vannote
Ca marche impecable ! J'en ai cherché des solutions et c'est la seule qui fonctionne. Merci beaucoup.
Seren||#4
Seren
Simple, efficace... ça marche du 1er coup. Merci beaucoup.
Les commentaires pour cet article peuvent être suivis via ce fil.


C'est pour un commentaire ?

Les champs signalés par la cloche doivent être remplis.




Si vous voulez mettre du code dans votre commentaire, ne mettez pas de crochets, sinon, la balise sera interprétée.

Je sens que je vais dire quelque chose...



math captcha