Назад | Перейти на главную страницу

YSlow обвиняет в отсутствии заголовков срока действия только для favicon.ico на Nginx

Я настроил Nginx (на моем локальном сервере), чтобы добавить такие заголовки Expires:

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

Я делаю что-то неправильно?

После многих тестов я заметил, что мое исходное регулярное выражение с самого начала работало нормально. Однако файл .ico был неправильно назван, поэтому браузер не нашел его. Это было истинной причиной предупреждения YSlow. Конечно, файл, который не найден, должен показывать не предупреждение "Дата истечения срока действия в далеком будущем", а сообщение "Контент не найден" ...

Проверить истекает заголовок в YSlow:

Возможно, работает в другом месте. Попробуйте ту же конфигурацию:

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

После изменения конфигурации перезагрузите nginx:

$ sudo nginx -t
$ sudo nginx -s reload

Проблема в том, что favicon.ico не соответствует указанному вами условию. Попробуйте добавить что-то вроде этого.

location /favicon.ico {
          expires max;      
}

Некоторые клиенты ищут значок в корне вашего сайта.

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