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