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    
 89    
 90    
                               
/*---------------------------------------------------------------*/
/*
    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 à 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'false304);
    header('Last-Modified: ' gmdate('D, d M Y H:i:s'$date_modif) . ' GMT');
    exit;
  } else {
    header('Status: 200 OK'false200);
    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

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

Remplacer le BBCode par du HTML avec PHP

Compatibilité : PHP 5, PHP 7

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

Génération de tableaux HTML avec PHP

Compatibilité : PHP 5, PHP 7

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

Formulaire de date en HTML avec PHP

Compatibilité : PHP 5, PHP 7

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

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

Affichage HTML de données MySQL

Compatibilité : PHP 5, PHP 7

Affichage sur n colonnes d'une table HTML d'enregistrements venues d'une table MySQL. Vous pouvez mettre autant de colonnes dans la table HTML.

Présentation de PHP

PHP débutant et initié 50 Tutoriel

Présentation de MySQL

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

13 292 Vues
Compatibilité
PHP 5, 7 et 8+
avatar