YSlow 指责 Nginx 上只有 favicon.ico 没有过期标头

YSlow 指责 Nginx 上只有 favicon.ico 没有过期标头

我已经配置了 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

难道我做错了什么?

答案1

经过多次测试,我发现我原来的正则表达式从一开始就运行良好。但是,.ico 文件的名称错误,因此浏览器找不到它。这是 YSlow 警报的真正原因。当然,找不到文件不应该显示“遥远的到期日期”警报,而应该显示“找不到内容”...

答案2

检查 YSlow 中的 expires 标头: 普瑞特

可能在其他位置有效。尝试相同的配置:

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

修改配置后,重新加载nginx:

$ sudo nginx -t
$ sudo nginx -s reload

答案3

问题是 favicon.ico 与您指定的条件不匹配。尝试添加类似这样的内容。

location /favicon.ico {
          expires max;      
}

答案4

一些客户会在您的网站的根目录中寻找网站图标。

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

相关内容