我知道这个问题在这个网站上至少被问了一千次,但我已经阅读了许多相关帖子,我认为自己非常有知识并且很少提问,而是更喜欢自己去研究。
然而,这个问题非常奇怪,我无法从以前的讨论中获得真正的启示(因为这个问题已经被频繁地讨论过,但我仍然没有受益),这就是我的问题:
favicon.ico 存在,并且(在本地托管的开发网站)http://website/favicon.ico
显示了正确的图标。它的大小只有 198 字节,所以符合 Firefox 在 about:config 中找到的 1024 字节的大小限制。根据网络上关于 favicon 的智慧,当页面的 head 标签中没有 favicon 时,浏览器应该自行请求获取。但我的 Apache 日志清楚地显示,Firefox(9.01 版本)甚至没有请求获取。
接下来,当我添加
后,Firefox 突然开始请求获取 favicon.ico ...<link rel="shortcut icon" href="/favicon.ico">
我还是没有设置网站图标。
接下来,当我使用以下代码时
<link rel="shortcut icon" href="/favicon.ico?">
(请注意结尾的“?”)我突然有了一个网站图标,但这不可能是缓存问题!第一,我已清除了缓存;第二,正如我上面提到的,我已经通过它的URL http://website/favicon.ico
成功地将图标文件加载到了Firefox中。
我无法解释Firefox的这种行为。顺便说一句,Chrome显示了正确的favicon。
这是我的页面头:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="shortcut icon" href="/favicon.ico?" />
</head>
...
只要在 "ico" 后至少附加 "?",它就能正常工作。
以下是当请求图标时服务器发送的内容,因为有人要求提供此信息。 我不知道这会有什么用,因为a)我说每次测试时我的缓存都是空的(也使用了 about:cache 进行了检查),并且b)我说当它没有显示时,服务器甚至没有被要求提供该文件。 Firefox 在没有附加 "?" 的情况下就不会发出请求 - 即使缓存为空!只有在使用附加的“?”时请求才会出现在 apache 日志中。
Date Fri, 23 Dec 2011 12:53:22 GMT
Server Apache/2.2.20 (Ubuntu)
Last-Modified Fri, 23 Dec 2011 12:02:49 GMT
Etag "12c07fe-c6-4b4c132190e30"
Accept-Ranges bytes
Content-Length 198
Content-Type image/x-icon