Compression de fichiers css js kml xml txt html

  Information

Pour optimiser les temps de chargement des pages, il est possible de compresser le contenu avant de l'envoyer au navigateur. Ce petit script permet de faire cette compression pour tous les fichiers physiques de type texte. 
Pour l'utiliser il faut disposer du rewriting et ajouter à la fin du fichier .htaccess les deux lignes suivantes : 
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*).(css|js|kml|xml|xsl|txt|html)$ /compresse.php?fichier=$1.$2&extension=$2 [L]

Il faut également nommer le script compresse.php (ou changer la règle de rewriting).

  code source classé dans  SEO - Référencement

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
 41    
 42    
 43    
 44    
 45    
 46    
 47    
 48    
 49    
 50    
 51    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
 70    
 71    
 72    
 73    
 74    
 75    
 76    
 77    
 78    
 79    
 80    
 81    
 82    
 83    
 84    
 85    
 86    
 87    
 88    
                               
/*
Titre : Compression de fichiers css js kml xml txt html

URL : https://phpsources.net/code_s.php?id=350
Auteur : forty
Website auteur : http://www.toplien.fr/
Date édition : 29 Fév 2008
Date mise a jour : 11 Aout 2019

Rapport de la maj:
- modification de la description
*/
/*---------------------------------------------------------------*/

?>

<?php
//nom du script : compresse.php
//ajouter les lignes suivantes à  la fin du fichier .htaccess pour utiliser le
// rewriting automatique
//RewriteCond %{REQUEST_FILENAME} -f
//RewriteRule
// ^(.*).(css|js|kml|xml|xsl|txt|html)$ /compresse.php?fichier=$1.$2&extension=$
//2
// [L]

//supprime les magic quotes
if (get_magic_quotes_gpc()) {
function noEscape($string) {
$string = is_array($string)? array_map('noEscape', $string): stripslashes(
$string);
return $string;
}
$_GET = array_map('noEscape', $_GET);
}

if (!empty($_GET['fichier']) && @file_exists($_GET['fichier'])) { //si le
// fichier existe
$date_modif = @filemtime(dirname(__FILE__) . '/' . $_GET['fichier']);
if (!empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) && (strtotime(preg_replace(
'/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE'])) < $date_modif)) {
header('Status: 304 Not Modified', false, 304);
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $date_modif) . ' GMT');
exit;
} else {
header('Status: 200 OK', false, 200);
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $date_modif) . ' GMT');
}
if (!isset($_SERVER['SCRIPT_URL'])) {
$uri = explode('?', $_SERVER['REQUEST_URI']);
$_SERVER['SCRIPT_URL'] = $uri[];
}
if ($_SERVER['SCRIPT_URL'] == $_SERVER['SCRIPT_NAME']) { //oblige a passer par
// le rewriting
die('error');
}
$extension = (empty($_GET['extension'])) ? strrchr(basename($_GET['fichier']),
'.') : $_GET['extension'];
if ($extension == 'css') {
header('Content-Type: text/css');
} elseif ($extension == 'js') {
header('Content-Type: application/x-javascript');
} elseif ($extension == 'kml') {
header('Content-Type: application/vnd.google-earth.kml+xml');
} elseif ($extension == 'xml') {
header('Content-Type: text/xml');
} elseif ($extension == 'xsl') {
header('Content-Type: text/xml');
} elseif ($extension == 'txt') {
header('Content-Type: text/plain');
} elseif ($extension == 'html') {
header('Content-Type: text/html');
} else {
die('error');
}
if ((ini_get('zlib.output_compression') != true) && function_exists('ob_gzh' .
'andler')) {
ob_start('ob_gzhandler'); //lance la bufferisation avec compression
} else {
ob_start(); //lance la bufferisation sans compression
header('Content-Length: ' . filesize($_GET['fichier']));
}
readfile($_GET['fichier']);
ob_end_flush(); //envoie les données
} else {
die('error');
}
?>

      Fonctions du code - Doc officielle PHP

Détail    php.net  
Description
Versions PHP
   array_map
Applique une fonction sur les éléments d'un tableau (PHP 4 >= 4.0.6, PHP 5, PHP 7)
PHP 4, 5, 7 et 8
   basename
Sépare le nom du fichier et le nom du dossier
PHP 4, 5, 7 et 8
   die
Alias de la fonction exit()
PHP 4, 5, 7 et 8
   dirname
Renvoie le nom du dossier
PHP 4, 5, 7 et 8
   empty
Détermine si une variable contient une valeur non nulle
PHP 4, 5, 7 et 8
   exit
Affiche un message et termine le script courant
PHP 4, 5, 7 et 8
   explode
Coupe une chaîne en segments
PHP 4, 5, 7 et 8
   filemtime
Renvoie la date de dernière modification du fichier
PHP 4, 5, 7 et 8
   filesize
Renvoie la taille d'un fichier
PHP 4, 5, 7 et 8
   file_exists
Vérifie si un fichier existe
PHP 4, 5, 7 et 8
   function_exists
Indique si une fonction est définie
PHP 4, 5, 7 et 8
   get_magic_quotes_gpc
Retourne la configuration actuelle de l'option magic_quotes_gpc
PHP 4, 5, 7 et 8
   gmdate
Formate une date/heure GMT/CUT
PHP 4, 5, 7 et 8
   header
Envoie un entête HTTP
PHP 4, 5, 7 et 8
   ini_get
Lit la valeur d'une option de configuration
PHP 4, 5, 7 et 8
   isset
Détermine si une variable est affectée
PHP 4, 5, 7 et 8
   is_array
Détermine si une variable est un tableau
PHP 4, 5, 7 et 8
   ob_end_flush
Envoie les données du tampon de sortie et éteint la
PHP 4, 5, 7 et 8
   ob_start
Enclenche la tamporisation de sortie
PHP 4, 5, 7 et 8
   preg_replace
Rechercher et remplacer par expression rationnelle standard
PHP 4, 5, 7 et 8
   readfile
Affiche un fichier
PHP 4, 5, 7 et 8
   return
Retourne le controle du programme au module appelant.
PHP 4, 5, 7 et 8
   stripslashes
Supprime les antislash d'une chaîne
PHP 4, 5, 7 et 8
   strrchr
Trouve la dernière occurrence d'un caractère dans une chaîne
PHP 4, 5, 7 et 8
   strtotime
Transforme un texte anglais en timestamp
PHP 4, 5, 7 et 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

[3]

  • avatar

    Forty

    23 Fév 2011 à 18:30

    Il faut créer le script compresse.php contenant le code ci-dessus et ajouter dans un fichier .htaccess les deux lignes citées dans le commentaire

  • avatar

    Invité

    23 Fév 2011 à 18:19

    Comment on utilise ce code ?

  • avatar

    Invité

    03 Déc 2009 à 02:03

     Bonjour, on peut également utiliser les modules d'apaches (mod_deflate ou mod_gzip et mod_cache) ce qui sera plus performant.


 Autres snippets qui pourraient vous intéressez

Formulaire de date en HTML avec PHP

Compatibilité : PHP 5, PHP 7, PHP 8

Affiche 3 menus déroulants HTMH représentant une date complète via PHP, avec l'année, le mois et le jour.

En PHP remplace une URL BBcode par une url HTML

Compatibilité : PHP 5, PHP 7, PHP 8

Remplace les balises BBcode des urls de type [URL=site] et [/URL] par leur équivalent HTML

Génération de tableaux HTML avec PHP

Compatibilité : PHP 5, PHP 7, PHP 8

Cette fonction génère des tableaux HTML. Passez lui en paramètres, l'intitulé des colonnes, votre tableau de données.

Remplacer le BBCode par du HTML avec PHP

Compatibilité : PHP 5, PHP 7, PHP 8

Permet de remplacer les balises BBCode d'une chaine de caractères par leur balises équivalentes HTML.

Analyse la validité d'un code HTML

Compatibilité : PHP 5, PHP 7, PHP 8

Analyse la syntaxe d'un fichier HTML. Retourne un tableau associatif rendant compte des erreurs contenues dans le fichier.

* Requêtes exécutées avec Recherche Contextuelle
avatar

Forty

  29 Fév 2008

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

    11 Aout 2019
    modification de la description

14 026 Vues
Compatibilité du code
PHP 5, 7 et 8+
avatar