web-dev-qa-db-ja.com

Vary:Accept-Encodingヘッダーを指定する方法

Googleとpingdom.comは、「Varyを指定する:Accept-Encodingヘッダー」を指定する必要があると述べています

これを行う方法がわかりません。誰かがそれが何で何をしているのか説明できますか?

13
jshariar

https://tools.pingdom.com/ および https://developers.google.com/speed/pagespeed/insights/ でほぼ100%のスコアを取得しています

スピードアップに役立つ記事を見つけましたwordpressウェブサイトまたはブログ https://www.keycdn.com/blog/speed-up-wordpress/

他のいくつかの最適化で、私は自分のサイトの.htaccessファイル(通常、メインのWebサイトフォルダーで非表示)

私のサーバーはApacheです。ホスティングコントロールパネル(cPanel/WHMパネルのように)で確認できます(サーバーがnginxの場合は、keycdn.comの投稿を確認してください)

(以下のコードをコピーして.htaccessファイルに貼り付けてください、私にとってはうまくいきます)

(あなたのために働いたらこの回答を賛成してください)

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 month"
ExpiresByType image/jpeg "access 1 month"
ExpiresByType image/gif "access 1 month"
ExpiresByType image/png "access 1 month"
ExpiresByType image/svg "access 1 month"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType text/javascript "access 1 month"
ExpiresByType application/javascript "access 1 month"
ExpiresByType application/xhtml+xml "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 month"
ExpiresDefault "access 1 month"
</IfModule>

<ifModule mod_headers.c>
  <filesMatch ".(css|jpg|jpeg|png|gif|swf|svg|js|ico)$">
    Header set Cache-Control "max-age=2592000, public"
  </filesMatch>
  <filesMatch ".(x?html?|php)$">
    Header set Cache-Control "private, must-revalidate"
  </filesMatch>
</ifModule>

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/json
  AddOutputFilterByType DEFLATE application/atom+xml
  AddOutputFilterByType DEFLATE application/rdf+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-font-woff
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/truetype
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
</IfModule>
18
BlackFire

cssjsxmlなどの特定のファイルの圧縮を有効にする必要があると思います。ドメインのルート.htaccessファイルに次のコードを追加すると、サーバーでこの種の機能が有効になります。

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

このルールにさらにファイルタイプを追加する場合は、その拡張子をステートメントに追加するだけです! <FilesMatch "\.(js|css|xml|gz|newone)$">

16

私もこれが機能しない問題がありました

発生したのは、phpファイルに別のヘッダーディレクティブがあったためです。

私はヘッダーセットキャッシュコントロールを持っていました-そして、それはヘッダー追加Varyを上書きするので、それらを同じブロックに配置する必要があります。
1つのFilesmatchステートメントで他のすべてのファイルのVaryを設定し、次のように別のFilesMatchステートメントでPHPファイルのキャッシュとVaryを設定する必要がありました。

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


<IfModule mod_headers.c>
<FilesMatch "\.(php)$">
 Header set Cache-Control "max-age=300"
 Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>

これは実際のCache-Controlステートメントではありません。サンプルコードを単純化しただけです。

3
Nat