2010-06-09 4 views
0

dans le répertoire racine de mon webapp, le fichier .htaccess contient la ligne suivante:PHP: option de Inhibit AddOutputFilterByType

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript

Cela signifie que toutes mes pages sont compactées, et il est ok.

Dans certaines pages, j'ai besoin que le navigateur ferme la connexion avant la fin du script (j'ai besoin d'un post-traitement fastidieux). Pour ce faire, je le fais:

ignore_user_abort(true); 
set_time_limit(0); 
$str = ob_get_contents(); 
ob_end_clean(); 
header("Content-Length: ".strlen($str)); 
header('Connection: close'); 

Sans compression, il fonctionne, avec la compression gzip permet pas: le navigateur affiche la page mais la roue de chargement fonctionne toujours. La question est: existe-t-il un moyen (par exemple avec ini_set()) de désactiver la compression gzip SEULEMENT pour certaines pages, depuis l'intérieur du code php?

Répondre

0

En fait, après quelques essais, j'ai trouvé que la solution retenue n'est pas optimale:

  • apache remplace l'en-tête Content-Encoding si la compression est activée,
  • changer le type de contenu a L'inconvénient est que vous DEVEZ produire du XML bien formé (c'est un PITA, étant donné que les concepteurs de sites Web travaillent du côté HTML).

Une solution de travail consiste à désactiver la compression pour le bien:

@apache_setenv('no-gzip', 1); 
@ini_set('zlib.output_compression', 0); 

Tiré de l'excellente documentation PHP

1

Je viens de trouver quelque chose qui pourrait fonctionner. Cela empêche Apache d'appliquer l'encodage gzip/defalte. Pas mal si elle inhibe le module de filtre lui-même:

header("Content-Encoding: identity"); 

Ou utilisez l'application/xhtml + Content-Type xml.

+0

En fait, le changement 'Content-Type', en utilisant une qui ne correspond pas à la types spécifiés travaillent. Je pense que je vais opter pour cette solution, merci. – Iacopo

+0

Voir [RFC 2616 (14.3 et 14.11)] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) pour plus de détails. –