2009-06-05 8 views
2

Maintenant, je ne suis pas faire usage de toute méthode de compression, vient de mettre le ci-dessous entre la balise body:comment utiliser gzip pour un fichier css/js en PHP?

<link rel="stylesheet" type="text/css" href="Client/Css/all.css" /> 

Est-il possible d'utiliser ob_start (« ob_gzhandler ») en PHP pour compresser ce fichier css?

Et comment?

Répondre

4

cela ne fait généralement un programme, il est géré par le serveur web

Pour apache, il y a un module mod_gzip ou mod_deflate que vous pouvez utiliser.

IIS has settings que vous pouvez utiliser.

+1

À moins qu'il utilise une version plus ancienne, il va vouloir utiliser mod_deflate, pas mod_gzip. – jacobangel

+0

Je ne comprends pas: gzip est plus utilisé que deflate, pourquoi Mod_Gzip est plus ancien que mod_deflate? – omg

2

Oui, vous pouvez (lors de la tuyauterie des fichiers via un script PHP qui effectue la compression). Mais il y a beaucoup plus à faire que de simplement compresser la sortie. Vous devriez seulement envoyer la sortie compressée aux clients qui la supportent, vous devriez vous assurer que vous manipulez correctement les informations/demandes de mise en cache. Etc.

Dans certains cas, votre serveur web contient le support pour faire tout cela pour vous sans avoir besoin d'un script PHP. Dans le cas d'Apache, regardez mod_deflate et mod_mime (directive AddEncoding).

+0

Aussi, mod_expires – Piskvor

1

Il existe plusieurs façons.

Vous pouvez dire au serveur Web pour traiter le fichier comme PHP (changement de nom pour une extension .php serait le plus simple), puis ajoutez:

<?php 
    header("Content-type: text/css; charset=utf-8"); 
    ob_start("ob_gzhandler") 
?> 

vers le haut.

Vous pouvez écrire un script PHP qui fait la même chose, mais qui lit dans le fichier CSS au lieu de l'avoir en ligne. Ces deux options entraînent des problèmes de mise en cache: vous devez également prendre en charge les en-têtes HTTP du contrôle de cache si vous voulez être sain d'esprit.

La meilleure option serait d'oublier PHP et simplement configurer votre serveur Web pour compresser ces fichiers (en utilisant mod_deflate, mod_gzip ou similaire)

+0

N'oubliez pas la déclaration de codage de caractères. – Gumbo

+0

Il est assez irrelevent - seulement les cas de bord très très rares n'utilisent pas ASCII simple - qui est un sous-ensemble de tout encodage de caractères susceptible d'être utilisé. – Quentin

0

Qu'est-ce que vous essayez d'accomplir? Si vous essayez de réduire les composants à envoyer au navigateur des clients afin qu'ils soient téléchargés plus rapidement, vous devriez utiliser mod_defalte. Si ce n'est pas une option, vous pouvez trouver plus ici: first result from googling "gzip php css"

EDIT: Je veux juste signaler que si vous utilisez une ancienne version d'Apache, vous devez utiliser mod_deflatepas mod_gzip.

1

Si vous utilisez une version plus récente du serveur web apache ajouter ce qui suit à votre fichier .htaccess:


DeflateCompressionLevel 9 
SetOutputFilter DEFLATE 
BrowserMatch ^Mozilla/4 gzip-only-text/html 
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary 
Header append Vary User-Agent env=!dont-vary 

Questions connexes