GTmetrixで満点を取ろう。「Specify a Vary: Accept-Encoding header」重要度:弱
Specify a Vary: Accept-Encoding header。
状況が乏わなければ中々見ることのないエラーといえます。
Specify a Vary: Accept-Encoding headerとは
Specify a Vary: Accept-Encoding headerを直訳すると「ヴァリーを指定し、エンコードヘッダーを受け入れろ」。
何のことかよく分かりませんね。
ここでいう「Vary」はHttpヘッダーのことです。
Varyを使うタイミングはレスポンシブデザイン(特にユーザーエージェント式)の時に
使うことになります。
何に使うのか。
それはアクセスしてきたブラウザによって、出すべきものを変えるって意味ですが、
サーバー上に置いているデータはサイトによっては圧縮しています(gzip)。
このgzip.PCブラウザでOSが古くないならば問題ないのですが、WinXPやMacOS9とかの
古いシステムからでは読めません。
それをこのVaryで分けてしまえってことです。
解決方法
方法としては、ユーザーエージェントによって読ませるファイルが
違うよと認識させれれば良い。
.htaccessに下記構文を入れちゃってください。
Header set Vary User-Agent
これでユーザーエージェントが違えば読ませるファイルが違うと宣言できた。
当然だけど、各ページにもユーザーエージェントの指定が入っていないといけない。
もう一つは、キャッシュの設定で、圧縮版と未圧縮版両方をキャッシュさせてしまう方法。
これも.htaccessに
<IfModule mod_deflate.c> Header append Vary Accept-Encoding env=!dont-vary </IfModule>
終わりに
圧縮の設定やユーザーエージェントの設定によっては全く見ないエラーでもあります。