{"id":1453,"date":"2015-03-06T15:43:00","date_gmt":"2015-03-06T14:43:00","guid":{"rendered":"http:\/\/blog.kodono.info\/wordpress\/?p=1453"},"modified":"2015-03-07T16:12:05","modified_gmt":"2015-03-07T15:12:05","slug":"activer-la-compression-gzip-deflate-sur-1and1-astuce","status":"publish","type":"post","link":"https:\/\/blog.kodono.info\/wordpress\/2015\/03\/06\/activer-la-compression-gzip-deflate-sur-1and1-astuce\/","title":{"rendered":"Activer la compression gzip \/ deflate sur 1and1 [Astuce]"},"content":{"rendered":"<p>Ayant un WordPress chez 1and1 j&#8217;ai voulu activer la compression de mes pages. Apr\u00e8s avoir longuement cherch\u00e9 de partout, j&#8217;ai trouv\u00e9 comment proc\u00e9der, et ce n&#8217;est vraiment pas simple&#8230;. En effet, il va falloir faire passer tous nos fichiers (js, css, html, &#8230;) par PHP afin qu&#8217;ils soient compress\u00e9s \u00e0 la vol\u00e9e.<\/p>\n<h2>Chemin d&#8217;acc\u00e8s complet<\/h2>\n<p>Il nous faut le chemin d&#8217;acc\u00e8s complet chez 1and1. Pour cela on va mettre un fichier temporaire \u00e0 la racine de notre site qui se nomme <code>info.php<\/code> dans lequel on inscrit :<\/p>\n<pre class=\"brush:php\">\r\n&lt;?php\r\nphpinfo();\r\n?>\r\n<\/pre>\n<p>On acc\u00e8de \u00e0 cette page via un navigateur pour avoir toutes les informations li\u00e9es \u00e0 PHP. On y cherche la ligne qui correspond \u00e0 <code>DOCUMENT_ROOT<\/code> afin de trouver le chemin d&#8217;acc\u00e8s complet de notre site ; par exemple <code>\/kunden\/homepages\/25\/d3506178849\/htdocs\/clickandbuilds\/WordPress\/<\/code>.<\/p>\n<p><strong>Supprimer le fichier info.php<\/strong>.<\/p>\n<h2>Cr\u00e9ation du prepend file<\/h2>\n<p>Maintenant on cr\u00e9e un nouveau fichier \u00e0 la racine de notre site qui se nomme <strong>headers.php<\/strong> dans lequel on met :<\/p>\n<pre class=\"brush:php\">\r\n&lt;?php\r\n$pathinfo=pathinfo($_ENV['SCRIPT_FILENAME']); \r\n$extension=$pathinfo['extension']; \r\nswitch ($extension) {\r\n  case 'css':\r\n    $contentType = 'text\/css';\r\n    break;\r\n  case 'js':\r\n    $contentType = 'application\/x-javascript';\r\n    break;\r\n  case 'xml':\r\n    $contentType = 'text\/xml';\r\n    break;\r\n  default:\r\n    $contentType = 'text\/html';\r\n    break;\r\n}\r\nheader(\"Content-type: \".$contentType);\r\n\/\/ pour v\u00e9rifier que notre script est bien ex\u00e9cut\u00e9\r\nheader(\"X-Homemade-Compression: OK\");\r\n?>\r\n<\/pre>\n<p>Ce fichier va \u00eatre appel\u00e9 pour chaque page et va permettre d&#8217;envoyer le bon <code>Content-Type<\/code>.<\/p>\n<h2>Fichiers <em>.htaccess<\/em> et <em>php.ini<\/em><\/h2>\n<p>Maintenant, cela se complique car il va falloir rep\u00e9rer o\u00f9 se situent toutes les ressources que l&#8217;on souhaite compresser. Dans le cas de WordPress, il devrait y avoir :<\/p>\n<ul>\n<li>\/wp-includes\/js\/jquery\/*<\/li>\n<li>\/wp-content\/themes\/<em>votretheme<\/em>\/*<\/li>\n<\/ul>\n<p>On peut aussi inclure les \u00e9ventuels r\u00e9pertoires des plugins, et toutes autres ressources.<\/p>\n<p>On se cr\u00e9e un fichier <code>php.ini<\/code> :<\/p>\n<pre class=\"brush:text\">\r\n; Server side compression\r\nzlib.output_compression=on\r\nzlib.output_compression_level=9\r\n; tous les fichiers seront pars\u00e9s par le script headers.php afin d'envoyer le bon Content-Type\r\nauto_prepend_file=\/kunden\/homepages\/25\/d3506178849\/htdocs\/clickandbuilds\/WordPress\/headers.php\r\n<\/pre>\n<p>On se cr\u00e9e aussi un fichier <code>.htaccess<\/code> en y mettant :<\/p>\n<pre class=\"brush:text\">\r\nAddType x-mapp-php5 .html .htm .css .js .php\r\n<\/pre>\n<p>Pour que la compression fonctionne sans cr\u00e9er de probl\u00e8me, il va falloir envoyer ces deux fichiers <strong>dans chaque r\u00e9pertoire<\/strong> des ressources que l&#8217;on souhaite compresser. Par exemple dans <code>\/wp-content\/themes\/votretheme\/js\/<\/code> pour que les fichiers JS du th\u00e8me soient impact\u00e9s.<\/p>\n<p>Vous pouvez aussi mettre <code>php.ini<\/code> \u00e0 la racine de votre site web, <strong>mais sans utiliser<\/strong> le <code>.htaccess<\/code> de ci-dessus afin d&#8217;\u00e9viter des probl\u00e8mes avec l&#8217;admin.<\/p>\n<h2>On teste<\/h2>\n<p>Enfin vous pouvez tester si tout est correct gr\u00e2ce \u00e0 <code>curl<\/code> sous Linux :<br \/>\n<code>curl -I -H 'Accept-Encoding: gzip,deflate' --head http:\/\/votresite\/votreressource.js<\/code><\/p>\n<p>Vous devriez voir apparaitre :<\/p>\n<pre class=\"brush:plain\">\r\nX-Homemade-Compression: OK\r\nContent-Encoding: gzip\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ayant un WordPress chez 1and1 j&#8217;ai voulu activer la compression de mes pages. Apr\u00e8s avoir longuement cherch\u00e9 de partout, j&#8217;ai trouv\u00e9 comment proc\u00e9der, et ce n&#8217;est vraiment pas simple&#8230;. En effet, il va falloir faire passer tous nos fichiers (js, css, html, &#8230;) par PHP afin qu&#8217;ils soient compress\u00e9s \u00e0 la vol\u00e9e. Chemin d&#8217;acc\u00e8s complet [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","hide_page_title":"","footnotes":""},"categories":[15,20],"tags":[153,155],"class_list":["post-1453","post","type-post","status-publish","format-standard","hentry","category-astuce","category-niveau-expert","tag-astuce","tag-niveau-expert"],"_links":{"self":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/comments?post=1453"}],"version-history":[{"count":9,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1453\/revisions"}],"predecessor-version":[{"id":1462,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1453\/revisions\/1462"}],"wp:attachment":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/media?parent=1453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/categories?post=1453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/tags?post=1453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}