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
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 :
- 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.phpet prenez votre loupe.
Il s'agit de repérer dans cette page une ligne qui ressemblerait à ça :
/kunden/homepages/69/d206389610/htdocsc'est dans la rubriqueDOCUMENT_ROOT.
C'est bon ? Vous l'avez ? Vous avez trouvé le chemin exact de votre serveur.
Poursuivons. - 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
Grâce à cette$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");en-tête HTTPon 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 valeurexpireson 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é :
Enregistrez-le sous le nom deConfigurer 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.headers.php. Placez ensuite ce fichier dans un dossier que vous nommerez comme vous voulez.
Pour l'exemple toutefois ce dossier se nommerawebscripts. C'est bon ?
Étape suivante : - 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 nommerezphp.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 fichierheaders.
Ce fichier est à placer à la racine du site ainsi que dans les répertoires de votre CSS et de vos JS. - Domestiquons l'Apache
Ouvrez maintenant votre fichier.htaccesset 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 :
- 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
- 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
- Compression de fichiers chez 1and1 : How to Compress PHP and Other Text-Based Files with 1&1 (and Other Shared Hosts)
Commentaires :
Merci sa marche super bien pour mon site de Babouches
ou met on le ficher php.ini?
merci
à la racine du site
Par exemple, le répertoire des js ou le répertoire des css
Une vraie spécificité 1&1...
1 000 excuses pour l’oubli.
Je suis passée d'une page d'accueil de plus de 24ko à 8ko !!!
Arigatou gozaimasu :)
il suffit de faire un rétropédalage en y déposant par FTP le fichier .htaccess originel et en supprimant (ou en renommant) le php.ini.
voir pecheursdu34.com
Une solution ?
pourquoi ne pas créer un fichier php.ini contenant "zlib.output_compression = true" comme expliqué dans la FAQ ?
Ça rend la conversation un peu plus compliquée du coup... mais c’est pas grave...
Je vous confirme que cela marche bien, je viens de le faire sur un nouveau site. Par contre, je ne retrouve pas la mention à cette technique dans la FAQ de l'hébergeur ?... Voici un exemple :
http://blog.mb-creations.com/articles/2010/activer-la-compression-gzip-et-php5-sur-un-hebergement-11.html
Il y a donc 2 solutions maintenant pour régler le problème de la compression gzip chez 1and1.
En fait il a fallu que j'aille voir l'article original pour comprendre :
j'ai remplacé la ligne :
= auto_prepend_file / kunden/homepages/69/d206389610/htdocs/webscripts/headers.php
par :
auto_prepend_file = /kunden/homepages/69/d206389610/htdocs/webscripts/headers.php
J'ai également remplacé la superglobale $_ENV qui ne renvoyait rien par $_SERVER
Maintenant tout marche impec.
J'espère que ça pourra aider des gens :)
Réparé maintenant. Merci Nam.
Par contre, lightbox n'aime pas du tout être "gzippé"... T_T
Les autres .js pas de soucis mais je crois bien que je vais devoir me passer de lighbox...
Si t'as une solution je suis preneuse, sinon je vais quand même chercher autre chose que lighbox pour pouvoir recompresser mes css.
(Désolée, je suis entrain de pourrir tes commentaires !)
Pour ton problème je ne vois pas le problème : une CSS est une CSS, non ?
Et il y a aussi une lightbox sans Javascript, en CSS3 :
HTML5 snippet : Pure CSS3 image lightbox with fade in/out transitions.
Je disais juste que j'attends que CSS3 devienne valide W3C avant de me pencher dessus.
Surtout que certains navigateurs ont déjà du mal avec CSS2.1.....
Mais merci pour le lien.
Et je confirmais que le CSS de la lightbox, si gzippé, faisait complètement planter l'affichage avec lightbox.
J'ai du coup mis en place fancybox et là ça marche impec même gzippé (et en plus je préfère)
Voilou !
Ah et merci de continuer à répondre aux commentaires malgré ta décision d'abandon du site :)
En suivant la procédure décrite ci-dessus :
- des services comme http://web-sniffer.net/ et http://www.gidnetwork.com/tools/gzip-test.php me confirment que la compression fonctionne (cool!)
- par contre, un Google Page Speed (https://developers.google.com/pagespeed) ou un coup sur http://www.webpagetest.org me disent le contraire... qui croire ? Et j'avoue que si je pouvais avoir la bénédiction de Google, ce serait super bonus...
Des idées quelqu'un ?