Activer la compression gzip et PHP5 sur un hebergement mutualisé

DarkRecolteur

Habitué
Bonjour à tous,

J’ai pensé que cette astuce pourrait vous aider :
Quand j’avais un hébergement chez 1&1 et qu’il n’avais pas de la compression Gzip d’activer pour mes fichiers HTML , CSS, etc alors voici comment je procédais.
Pour ne pas perdre côté performance et optimisation en PHP bien qu’il ai la fonction « ob_start » qui permet de gzip le transfère de la ressource il ne le fait pas dans le fichier statique.
Je me retrouvais avec ce genre de code par exemple :
view plaincopy to clipboardprint?
<!--?php
ob_start("ob_gzhandler");
?-->
Un ami m’a donc conseillé et j’ai un peu modifié sa solution car je la trouvais un peu lourde et j’avais trouvé une faille dans sa sécurité. Voici ce qu’il ajouter à la règle dans le .htaccess:
# BEGIN GZIP
<ifmodule mod_rewrite.c="">
RewriteEngine On
RewriteRule (.*)\.(css|js|xml|txt|)$ /media.php?file=$1.$2 [L]
</ifmodule>
# END GZIP
Ensuite ajoutez le script « media.php » dans la racine de votre hébergement:

<!--?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");
}
?-->
Entre temps j’ai aussi trouvé cette solution qui fonctionne aussi :

php.ini + htaccess. dans Le root -> www / php.ini

zlib . output_compression = 1
zlib . output_compression_level = 7

Htaccess.
<Fichiers . htaccess |. ini >
Order allow, deny
deny from all
</ Files>

IndexIgnore *

DirectoryIndex index.php

AddType application/x-httpd-php5. Php
AddType application / x-httpd-php. Html. Htm
AddType application / x-httpd-php. Js
AddType application / x-httpd-php. Css

<IfModule mod_rewrite . c >
# Action ici
</ IfModule>

<IfModule mod_mime . c >
AddType text / css. Css
AddType application / x-javascript. Js
AddType text / x-composant. HTC
AddType text / html. Html. Htm
AddType text / richtext. Rtf. RTX
AddType image / svg + xml. Svg. Svgz
Text / plain AddType. Txt
AddType text / xsd. Xsd
Text / xsl AddType. Xsl
AddType text / xml. Xml
AddType vidéo / asf. Asf. Asx. Cire. Wmv. Wmx
AddType video / avi. Avi
AddType image / bmp. Bmp
AddType application / java. Classe
AddType vidéo / divx. Divx
AddType application / pdf. Doc. Docx
AddType application / vnd.ms-fontobject. EOT
AddType application / x-msdownload. Exe
AddType image / gif. Gif
AddType application / x-gzip. Gz. Gzip
AddType image / x-icon. Ico
AddType image / jpeg. Jpg. Jpeg. Jpe
AddType application / vnd.ms-Access. Mdb
AddType audio / midi. Milieu. Midi
AddType video / quicktime. Mov. Qt
AddType audio / mpeg. Mp3. M4a
AddType video/mp4. Mp4. M4v
AddType video / mpeg. Mpeg. Mpg. Mpe
AddType application / vnd.ms-projet. MPP
AddType application / x-font-OTF. FTO
AddType application / vnd.oasis.opendocument.database. ODB
AddType application / vnd.oasis.opendocument.chart. ODC
AddType application / vnd.oasis.opendocument.formula. ODF
AddType application / vnd.oasis.opendocument.graphics. ODG
AddType application / vnd.oasis.opendocument.presentation. odp
AddType application / vnd.oasis.opendocument.spreadsheet. Ods
AddType application / vnd.oasis.opendocument.text. Odt
AddType audio / ogg. Ogg
AddType application / pdf. Pdf
AddType image / png. Png
AddType application / vnd.ms-powerpoint. Pot. Pps. Ppt. Pptx
AddType audio / x-realaudio. Ra. Ram
AddType application / x-shockwave-flash. Swf
AddType application / x-tar. Tar
AddType image / tiff. Tif. Tiff
AddType application / x-font-ttf. TTF. Ttc
AddType audio / wav. Wav
AddType audio / WMA. Wma
AddType application / vnd.ms-écriture. WRI
AddType application / vnd.ms-excel. Xla. Xls. Xlsx. XLT. Xlw
AddType application / zip zip.
</ IfModule>

<IfModule mod_expires . c >
Sur ExpiresActive
ExpiresByType text / css A31536000
ExpiresByType application / x-javascript A31536000
ExpiresByType text / A31536000 composante x
ExpiresByType text / html A3600
ExpiresByType text / richtext A3600
ExpiresByType image / svg + xml A3600
Texte ExpiresByType / plain A3600
ExpiresByType text / xsd A3600
ExpiresByType text / xsl A3600
ExpiresByType text / xml A3600
ExpiresByType vidéo / asf A31536000
ExpiresByType / vidéo avi A31536000
ExpiresByType image / bmp A31536000
ExpiresByType application / java A31536000
ExpiresByType vidéo / divx A31536000
ExpiresByType application / msword A31536000
Demande ExpiresByType / vnd.ms-fontobject A31536000
Demande ExpiresByType / x-msdownload A31536000
ExpiresByType image / gif A31536000
ExpiresByType application / x-gzip A31536000
ExpiresByType image / x-icon A31536000
ExpiresByType image / jpeg A31536000
Demande ExpiresByType / vnd.ms-accès A31536000
ExpiresByType audio / midi A31536000
ExpiresByType video / quicktime A31536000
ExpiresByType audio / mpeg A31536000
ExpiresByType video/mp4 A31536000
ExpiresByType vidéo / mpeg A31536000
A31536000 demande ExpiresByType / vnd.ms-projet
ExpiresByType application / x-font-otf A31536000
Application / A31536000 vnd.oasis.opendocument.database ExpiresByType
Application / A31536000 vnd.oasis.opendocument.chart ExpiresByType
ExpiresByType application / vnd.oasis.opendocument.formula A31536000
ExpiresByType application / vnd.oasis.opendocument.graphics A31536000
ExpiresByType application / vnd.oasis.opendocument.presentation A31536000
Application / A31536000 vnd.oasis.opendocument.spreadsheet ExpiresByType
Demande ExpiresByType / A31536000 vnd.oasis.opendocument.text
ExpiresByType audio / ogg A31536000
Demande ExpiresByType / A31536000 pdf
ExpiresByType image / png A31536000
ExpiresByType application / vnd.ms-powerpoint A31536000
ExpiresByType audio / x-realaudio A31536000
ExpiresByType image / svg + xml A31536000
A31536000 ExpiresByType application / x-shockwave-flash
ExpiresByType application / x-tar A31536000
ExpiresByType image / tiff A31536000
Demande ExpiresByType / A31536000 x-font-ttf
ExpiresByType audio / wav A31536000
ExpiresByType audio / wma A31536000
Demande ExpiresByType / vnd.ms-écrire A31536000
ExpiresByType application / vnd.ms-excel A31536000
ExpiresByType application / A31536000 postal
</ IfModule>

# START Compression
<IfModule mod_deflate . c >
AddOutputFilterByType DEFLATE text / css text / plain texte / texte html / richtext
AddOutputFilterByType DEFLATE text / javascript application / x-javascript demande / javascript application / json
AddOutputFilterByType DEFLATE text / x image composante / svg + xml texte / texte xsd / xsl text / xml image / x-icon
</ IfModule>
Compression # END

# START Expire
<IfModule mod_expires . c >
Sur ExpiresActive
ExpiresDefault "accès plus 2 heures"
ExpiresByType image / gif "accès plus 2 heures"
ExpiresByType image / gif "accès plus 2 heures"
ExpiresByType image / png "accès plus 2 heures"
ExpiresByType image / "l'accès plus 2 heures" jpg
ExpiresByType image / jpeg "accès plus 2 heures"
ExpiresByType image / ico "accès plus 2 heures"
Text / css "accès plus 2 heures" ExpiresByType
ExpiresByType text / javascript "accès plus 2 heures"
</ IfModule>
# END Expire

# BEGIN-têtes Cache-Control
<IfModule mod_headers . c >
<FilesMatch "\ (ico |? jpe g | png | gif | swf). $" >
ensemble d'en-tête Cache-Control "public"
</ FilesMatch>
<FilesMatch "\. (css) $" >
ensemble d'en-tête Cache-Control "public"
</ FilesMatch>
<FilesMatch "\. (js) $" >
ensemble d'en-tête Cache-Control "privé"
</ FilesMatch>
<FilesMatch ". \ (? x html | php) $" >
ensemble d'en-tête Cache-Control "privé, doit-revalider"
</ FilesMatch>
</ IfModule>
# Fin têtes Cache-Control

# BEGIN expiration têtes
<IfModule mod_expires . c >
Sur ExpiresActive
"L'accès plus 5 secondes" ExpiresDefault
ExpiresByType image / x-icon "access plus 2592000 secondes"
ExpiresByType image / jpeg "access plus 2592000 secondes"
ExpiresByType image / png "access plus 2592000 secondes"
ExpiresByType image / gif "access plus 2592000 secondes"
"Access plus 2592000 secondes" ExpiresByType application / x-shockwave-flash
Text / css "Accès Plus" 604800 secondes ExpiresByType
Text / javascript de "l'accès plus 1 semaine" ExpiresByType
"L'accès plus 1 semaine" ExpiresByType application / javascript
"L'accès plus 1 semaine" ExpiresByType application / x-javascript
Text / html "accès plus 600 secondes" ExpiresByType
ExpiresByType application / xhtml + "accès plus 600 seconds" xml
</ IfModule>
# END expiration têtes

<FilesMatch "\ (ico | pdf | flv | jpg | jpeg | png | gif | js | css | swf). (. \ gz) $" >
jeu de tête Expire "Thu, 15 avril 2015 20:00:00 GMT"
</ FilesMatch>

<FilesMatch "\ (ico | pdf | flv | jpg | jpeg | png | gif | js | css | swf).? (. \ gz) $" >
Header unset ETag
Aucun FileETag
</ FilesMatch>

<FilesMatch "\ (avi | mov | mp3 | wmv | wav). $" >
ExpiresDefault A29030400
Header append Cache-Control "public"
</ FilesMatch>

<IfModule mod_gzip . c >
mod_gzip_on Oui
mod_gzip_dechunk Oui
mod_gzip_keep_workfiles Non
mod_gzip_can_negotiate Oui
mod_gzip_add_header_count Oui
mod_gzip_send_vary Oui
mod_gzip_command_version '/ mod_gzip_status'
mod_gzip_min_http 1000
mod_gzip_minimum_file_size 300
mod_gzip_maximum_file_size 512000
mod_gzip_maximum_inmem_size 60000
mod_gzip_handle_methods GET POST
mod_gzip_temp_dir / tmp
mod_gzip_item_include fichier \. html $
mod_gzip_item_include fichier \. php $
mod_gzip_item_include fichier \. css $
mod_gzip_item_include fichier \. $ js
mod_gzip_item_include mime ^ application / javascript $
mod_gzip_item_include mime ^ application / x-javascript $
mod_gzip_item_include mime ^ text / *.
gestionnaire mod_gzip_item_include ^ application / x-httpd-php
mod_gzip_item_exclude mime ^ image / *.
</ IfModule>

# Par extension de fichier
SetEnvIfNoCase request_uri \. Mdb $ gzip = 9
SetEnvIfNoCase request_uri \. Bmp $ gzip cache-enable = mem
SetEnvIfNoCase request_uri \. :)? Jpg | gif | png | swf | avi | rm) $ no-gzip

# Par type MIME
SetEnvIfNoCase mime text / *. Gzip = 9 cache-enable = mem
SetEnvIfNoCase mime audio / wav gzip cache-enable = mem
SetEnvIfNoCase mime image / bmp gzip cache-enable = mem
SetEnvIfNoCase mime message/rfc822 gzip
SetEnvIfNoCase mime application / msword gzip
SetEnvIfNoCase mime application / postscript gzip
SetEnvIfNoCase mime application / vnd.ms-excel gzip
SetEnvIfNoCase mime application / vnd.ms-powerpoint gzip
SetEnvIfNoCase mime application / vnd.ms-travaux gzip
SetEnvIfNoCase mime application / x-gzip javascript cache-enable = mem
SetEnvIfNoCase mime application / x-gzip msaccess
SetEnvIfNoCase mime application / pdf gzip

# Mettre delta expiration pour le contenu statique.
# Pages dynamiques devraient mettre delta expiration par soi-même.
Tête de fusion Cache-Control max-age = 86400 env = cache-enable

<IfModule mod_deflate . c >
# La ligne suivante est suffisant pour. Js et. Css
AddOutputFilter DEFLATE js css
# La ligne suivante permet également la compression en fonction du type de contenu du fichier, la liste suivante de Content-Type: s
AddOutputFilterByType DEFLATE text / html text / plain texte / xml application / xml
# Les lignes suivantes sont à éviter bugs avec certains navigateurs
BrowserMatch ^ Mozilla / 4 gzip-only-text/html
BrowserMatch ^ Mozilla / 4 \ .0 [678] no-gzip
BrowserMatch \ bMSIE! No-gzip! Gzip-only-text/html
</ IfModule>

<IfModule mod_headers . c >
<FilesMatch "\ (js | css | xml | gz). $" >
Header append Vary: Accept-Encoding
</ FilesMatch>
</ IfModule>

Bon courage :)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 119
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut