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>

終わりに

圧縮の設定やユーザーエージェントの設定によっては全く見ないエラーでもあります。