2 votes

Content-Encoding n'est pas affiché dans l'en-tête de réponse lorsque Accept-Encoding est gzip ou deflate

J'utilise Firefox et lorsque je règle Accept-Encoding sur "deflate,gzip", j'obtiens "Content-Encoding : gzip" dans l'en-tête de réponse. Lorsque j'utilise Accempt-Encoding comme deflate ou gzip, le "Content-Encoding" est supprimé de l'en-tête.

Quelqu'un peut-il m'expliquer pourquoi ? Y a-t-il une configuration d'Apache dont je dois tenir compte ?

1voto

Tieme Points 101

Référez-vous à la RFC ; elle offre des détails sur les valeurs qui peuvent être utilisées dans Accept-Encoding et sur la manière dont un serveur teste si un codage de contenu est acceptable, selon un champ Accept-Encoding, en utilisant ces règles,

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

1voto

user650881 Points 111

Si vous servez un fichier .gz, vous cherchez peut-être à ajouter une association entre l'extension de fichier et le type de fichier mime souhaité avec mod_mime . Les éléments suivants peuvent être ajoutés à la configuration du VirtualHost.

AddEncoding x-gzip .gz

Par ailleurs, un un exemple plus complet pour servir du contenu pré-compressé implique non seulement l'ajout du type de codage, mais aussi la désactivation de mod_deflate et la réinitialisation du type de contenu. Cet exemple utilise mod_header pour ajouter le type d'encodage.

<IfModule mod_headers.c>
    # Serve gzip compressed CSS files if they exist 
    # and the client accepts gzip.
    RewriteCond "%{HTTP:Accept-encoding}" "gzip"
    RewriteCond "%{DOCUMENT_ROOT}%{REQUEST_FILENAME}\.gz" -s
    RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]

    # Serve gzip compressed JS files if they exist 
    # and the client accepts gzip.
    RewriteCond "%{HTTP:Accept-encoding}" "gzip"
    RewriteCond "%{DOCUMENT_ROOT}%{REQUEST_FILENAME}\.gz" -s
    RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]

    # Serve correct content types, and prevent mod_deflate double gzip.
    RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
    RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]

    <FilesMatch "(\.js\.gz|\.css\.gz)$">
      # Serve correct encoding type.
      Header append Content-Encoding gzip

      # Force proxies to cache gzipped & 
      # non-gzipped css/js files separately.
      Header append Vary Accept-Encoding
    </FilesMatch>
</IfModule>

(Notez que ce qui précède ajoute DOCUMENT_ROOT au chemin d'accès au fichier RewriteCond de l'exemple référencé, car je pense qu'il est nécessaire lorsqu'il est utilisé dans le contexte de VirtualHost de 2.2+).

0 votes

Je remarque que j'ai mis un lien vers la documentation d'Apache 2.4 alors que la question initiale faisait référence à la 2.2. Bien que je n'aie pas testé avec 2.2, un examen rapide me fait penser que cela devrait fonctionner avec 2.2 également.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X