Question

Google PageSpeed ​​dit que je devrais « Spécifier une variable :En-tête Accept-Encoding" pour JS et CSS.Comment faire cela dans .htaccess ?

Était-ce utile?

La solution

Je suppose que cela signifie que vous activez la compression gzip pour vos fichiers css et js, car cela permettra au client de recevoir à la fois du contenu codé en gzip et un contenu brut.

Voici comment procéder dans Apache2 :

<IfModule mod_deflate.c>
    #The following line is enough for .js and .css
    AddOutputFilter DEFLATE js css

    #The following line also enables compression by file content type, for the following list of Content-Type:s
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml

    #The following lines are to avoid bugs with some browsers
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</IfModule>

Et voici comment ajouter le Vary Accept-Encoding entête: [src]

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

Le Vary: header indique que le contenu servi pour cette URL variera en fonction de la valeur d'un certain en-tête de requête.Ici, il est dit qu'il proposera un contenu différent aux clients qui déclarent qu'ils Accept-Encoding: gzip, deflate (un en-tête de requête), que le contenu servi aux clients qui n'envoient pas cet en-tête.Le principal avantage de ceci, AFAIK, est de faire savoir aux proxys de mise en cache intermédiaires qu'ils doivent avoir deux versions différentes de la même URL en raison d'un tel changement.

Autres conseils

Je crains qu'Aularon n'ait pas fourni suffisamment d'étapes pour terminer le processus.Avec quelques essais et erreurs, j'ai pu activer avec succès Gzipping sur mon serveur WHM dédié.

Voici les étapes :

  • Exécutez EasyApache dans WHM, sélectionnez Deflate dans la liste Options exhaustives et reconstruisez le serveur.

  • Une fois terminé, allez dans Configuration des services >> Configuration Apache >> Éditeur d'inclusion >> Post VirtualHost Include, sélectionnez Toutes les versions, puis collez le code mod_headers.c et mod_headers.c (répertorié ci-dessus dans le message d'Aularon) l'un sur l'autre dans le champ de saisie.

  • Une fois sauvegardé, j'ai constaté une économie de données de 75,36 % en moyenne !Vous pouvez exécuter un test avant et après en utilisant cet outil de compression HTTP pour voir vos propres résultats : http://www.whatsmyip.org/http_compression/

J'espère que cela fonctionnera pour vous tous !

  • Mat

Pour compresser également vos fichiers de polices !

add "x-font/otf x-font/ttf x-font/eot"

un péché:

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml x-font/otf x-font/ttf x-font/eot

De nombreuses heures passées à clarifier ce que c'était.Lisez s'il vous plaît ce post pour obtenir l'avancé .HTACCESS codes et apprendre ce qu’ils font.

Vous pouvez utiliser:

Header append Vary "Accept-Encoding"
#or
Header set Vary "Accept-Encoding"

Cela me rendait fou, mais il semble qu'il manquait les deux points dans la modification d'Aularon après "Vary".Tellement changeant "Vary Accept-Encoding" à "Vary: Accept-Encoding" a résolu le problème pour moi.

J'aurais commenté sous le post, mais il ne semble pas que cela me le permette.

Quoi qu'il en soit, j'espère que cela évitera à quelqu'un les mêmes problèmes que moi.

si quelqu'un en a besoin NGINX fichier de configuration, voici l'extrait :

location ~* \.(js|css|xml|gz)$ {
    add_header Vary "Accept-Encoding";
    (... other headers or rules ...)
}

Pas besoin de spécifier ou même de vérifier si le fichier est / a compressé, vous pouvez l'envoyer à chaque fichier, à chaque demande.

Il indique aux proxys en aval de la façon de faire correspondre les en-têtes de demande futurs pour décider si la réponse en cache peut être utilisée plutôt que de demander une nouvelle du serveur d'origine.

<ifModule mod_headers.c>
  Header unset Vary
  Header set Vary "Accept-Encoding, X-HTTP-Method-Override, X-Forwarded-For, Remote-Address, X-Real-IP, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port, X-Forwarded-Server"
</ifModule>
  • le unset est de corriger certains bugs dans les anciens hébergements GoDaddy, en option.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top