web-dev-qa-db-ja.com

YSlowは、Nginxのfavicon.icoに対してのみ有効期限ヘッダーがないと非難しています

次のようなExpiresヘッダーを追加するように(ローカルサーバー上で)Nginxを構成しました。

location ~* \.(ico|css|js|gif|jpe?g|png)$ {
    expires max;
    #auth_basic "Restricted, please login";
    #auth_basic_user_file htpasswd.users;
}

しかし、YSlowは次のように言い続けています。

There is 1 static component without a far-future expiration date.
* (no expires) http://atpc.dev/f/a/i/favicon.ico

私は何か間違ったことをしていますか?

1
Roger

多くのテストを行った後、最初から元の正規表現が正常に機能していることに気付きました。ただし、.icoファイルの名前が間違っていたため、ブラウザはそれを検出しませんでした。これがYSlowアラートの真の原因でした。もちろん、ファイルが見つからない場合は、「遠い将来の有効期限」アラートではなく、「コンテンツが見つかりません」というアラートを表示する必要があります。

2
Roger

YSlowの期限切れヘッダーを確認します。 PrtSc

おそらく別の場所で動作します。同じ設定を試してください:

location = /f/a/i/favicon.ico {
    expires max;
}

構成を変更した後、nginxをリロードします。

$ Sudo nginx -t
$ Sudo nginx -s reload
1
ooshro

一部のクライアントは、サイトのルートでファビコンを探します。

location /favicon.ico {
    # if not found send 204 (content not found)
    try_files /f/a/i/favicon.ico =204;  
    expires max;      
}
0
Dario

問題は、指定した条件でfavicon.icoが一致しないことです。このようなものを追加してみてください。

location /favicon.ico {
          expires max;      
}
0
Sameer