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

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

4 ответа

Решение

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

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

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

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;      
}
Другие вопросы по тегам