2010-09-04 13 views
75

Google PageSpeed, JS ve CSS için "Bir Vary: Accept-Encoding üstbilgisini belirtme" gerektiğini belirtiyor. Bunu nasıl yapabilirim .htaccess?.htaccess'te "Vary: Accept-Encoding" başlığını belirtme

+22

bunu anlamına gelmez bir programlama dili içermeyen sırf bu, neden kapatıldığı emin değil kodlama ile ilgili değil. –

+0

@ BlueRaja-DannyPflughoeft Katılıyorum, bu 65100'den fazla kez görüntülendi, bu yüzden her gün htaccess soruları yanıtlamaktan bahsetmediğim iyi bir konu olduğunu düşünüyorum. –

+0

Bunun cehennem gibi olduğunu biliyorum, ancak 'Vary: Accept-Encoding' başlığı, tarayıcıya sayfanın bir sürümünü 'Content-Encoding' başlığına göre önbellekte saklayacağını söyleyecektir. Http://stackoverflow.com/questions/1975416/trying-to-understand-the-vary-http-header ve https://developers.google.com/speed/docs/best-practices/caching?hl adresini görmelisiniz. = sv & csw = 1 # LeverageProxyCaching –

cevap

84

Sanırım bu, css ve js dosyalarınız için gzip sıkıştırmayı etkinleştirmeniz anlamına gelir; çünkü bu, istemcinin hem gzip ile kodlanmış içeriği hem de düz bir içeriği almasını sağlar.

Bu apache2 bunu yapmak için nasıl:

<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> 

Ve burada Vary Accept-Encoding başlık eklemek için: [src]

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

Vary: başlık söyler içerik bu url için görev yaptığını olacak Belirli bir istek başlığının değerine göre değişir. Burada, bu üstbilgiyi göndermeyen istemcilere sunulan içerikten Accept-Encoding: gzip, deflate (istek başlığı) olduğunu söyleyen müşteriler için farklı içerik sunacağını söylüyor. Bunun başlıca avantajı olan AFAIK, aradaki önbellek proxy'lerinin, bu değişiklikten dolayı aynı URL'nin iki farklı versiyonuna sahip olmaları gerektiğini bilmelerini sağlamaktır.

+0

Bunun olduğunu sanmıyorum. JS ve CSS'm zaten sıkıştırılmış. PageSpeed ​​hala şikayet ediyor. – StackOverflowNewbie

+0

Cevabı düzenledim, kontrol et. – aularon

+3

Vary başlığını varsayılan olarak göndermek için mod_deflate [varsayılan] (http://httpd.apache.org/docs/2.0/mod/mod_deflate.html#proxies) olduğunu düşünüyorum. –

4

Korkarım Aularon bu süreci tamamlamak için yeterli adımlar sağlamıyor. Küçük bir deneme ve hata ile, Gzipping'ı özel WHM sunucumda başarıyla etkinleştirebildim. WHM içinde

  • çalıştırın easyapache, tümünü kapsayan Seçenekler listesi içinde Söndür seçin ve sunucuyu yeniden:

    Aşağıda adımlardır.

  • Bir kez bittiğinde, goto Servis Yapılandırması >> Apache Yapılandırması >> Düzenleyici İçer >> Post VirtualHost Dahil Et, Tüm Sürümler'i seçin ve mod_headers.c ve mod_headers.c kodunu (yukarıda Aularon'un postası içinde listelenen) yapıştırın. giriş alanı içinde başka bir tanesi.

  • Kaydedildikten sonra, ortalama% 75.36 veri tasarrufu görüyordum! Kendi sonuçlarını görmek için bu HTTP Sıkıştırma aracı kullanarak test öncesinde ve sonrasında çalıştırabilirsiniz: Bu hepinize için çalışır http://www.whatsmyip.org/http_compression/

Umut!

  • Matt
1

Bu beni deli oldu, ama o kadar aularon en düzenleme "Vary" sonra iki nokta üst üste eksikti görünüyor. Bu nedenle "Vary Accept-Encoding"'un "Vary: Accept-Encoding"'a değiştirilmesi sorunu benim için düzeltti.

Yayınının altında yorum yapabilirdim, ancak izin vermeyecek gibi görünmüyor. Her neyse, umarım bu, birisinin yaşadığım sıkıntıyı kurtarmasını umarız.

+2

Bunun bir fark yarattığına emin misin? 2.2 belgesinde örneklerin hiçbiri şu noktayı içermez: http://httpd.apache.org/docs/2.2/mod/mod_headers.html –

3

Yazı tipi dosyalarınızı da sıkıştırmak için!

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

olduğu gibi:

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

dosya/sıkıştırılmış edilmediğini her Talep üzerine, her dosya gönderebilirsiniz, kontrol bile belirtin ya gerek yok.

O nasıl önbelleğe tepki kökenli sunucu taze birini istediğine yerine kullanılıp kullanılamayacağını karar vermek gelecek istek başlıklarını maç için mansap vekiller söyler.

<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> 
  • unset

isteğe eski GoDaddy hosting bazı hataları düzeltmek etmektir.
1

kimse burada NGINX yapılandırma dosyası için buna ihtiyacı var pasajı ise: o açıklamayı harcanan

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

Birçok saat. Gelişmiş .HTACCESS kodlarını almak ve ne yaptığını öğrenmek için lütfen this post'u okuyun.

Sen kullanabilirsiniz:

Header append Vary "Accept-Encoding" 
#or 
Header set Vary "Accept-Encoding" 
İlgili konular