火狐没有显示的图标

我知道这个问题在这个网站上已经被问过至少一千次了,但是我读过很多这样的帖子,我确实认为自己非常博学,很少问任何问题,相反,我更喜欢做自己的研究。

然而,这个问题是如此奇怪,没有希望得到真正的启迪(因为这个问题已经被讨论了这么多次,我仍然不能从中受益) ,这里是我的问题:

Ico 已经存在,并且(本地托管的开发网站) http://website/favicon.ico显示正确的图标。它的大小只有198字节,所以我在 Firefox 的 about: config 中找到的大小限制是1024字节。根据关于网页图标的智慧,当页面中没有任何东西时,浏览器应该自己寻找图标。然而,我的 apache 日志清楚地显示 Firefox (9.01)从来没有要求过它。

下一步: 当我加入

<link rel="shortcut icon" href="/favicon.ico">

我还是没有收到图标。

下一步: 当我用

<link rel="shortcut icon" href="/favicon.ico?">

(请注意尾音“ ?”)我突然 好的得到一个图标。但它不能是一个缓存问题!首先,我已经清除了缓存,其次,如前所述,我已经成功地通过其 URL http://website/favicon.ico将图标文件加载到 Firefox 中

我无法解释 Firefox 的这种行为。顺便说一下,Chrome 显示了正确的收藏夹图标。

这是我的新闻负责人:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="shortcut icon" href="/favicon.ico?" />
</head>
...

只要我在“ ico”后面至少加上“ ?”,它就可以工作了。

Here is what the server sends when the icon is requested, since some have asked for this. 我不知道为什么这会是有用的,因为 a)我说我的缓存是空的每个测试(检查约: 缓存太) ,b)我说服务器从来没有要求文件时,它不显示。 Firefox just does not ask without the "?" - with cache empty! The request shows up in the apache log ONLY when I use the appended "?".

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
96700 次浏览

首先,通过直接加载图标 URL (将其放入浏览器的 URL 栏中)并强制刷新它,确保不会出现“普通”缓存问题 。如果这样做的工作,没有必要的复杂解决方案如下。



重要提示:

我最初的问题不可能是缓存问题: 首先,我 是的清除了缓存,其次,如上所述,我已经成功地通过其 URL http://website/favicon.ico将图标文件加载到 Firefox 中

因此,我 (没有)得到正确的图标在浏览器时,直接加载!但我仍然有错误的图标显示为“图标”。直接加载图标文件是(或曾经是)显示在实际收藏图标位置的 独立(当然第一次加载时除外)。

然而 ,如果 只有一个缓存问题和强制刷新工程为您比这个问题/问题不是你的!你的答案不是 这个问题的答案。

人们不应该忽视事实。当你被大量已经回答的和/或无用的问题轰炸的时候,问题的质量会暂时和档案一起受到影响。令人惊讶的是,我不得不与那些仍然坚持强制刷新是解决办法的人们斗争!



注意: 您可以像 StackOverflow 一样使用缓存终结器 URL 来完全避免这个问题,它们的收藏夹 URL 以 .../img/favicon.ico?v=4f32ecc8f43d结尾。

如果正常的缓存清除措施失败(就像它们对我做的那样) ,这里会给出一个答案: “清除 Firefox 3缓存中的所有收藏夹[ How-To ]”——和 这里有一个 Archive.org 版本的链接(可能比较慢,但是不会消失)

这一页上的步骤在这里重现了:

  1. 安装 Firefox 插件 SQLite Manager
  2. 从 Tools-> SQLite Manager 启动它
  3. 单击“ Database”菜单项(左上)并选择“ Connect Database”,输入 %APPDATA%\Mozilla\Firefox
  4. 打开 Profiles文件夹并转到您使用的配置文件
  5. 选择 places.sqlite作为要编辑的数据库文件(Firefox 61及更高版本: favicons.sqlite)
  6. 选择 moz_favicons表。从右键上下文菜单使用“空表”,不要使用「投放表」(表必须在那里) 或者使用右键上下文菜单的数据,并选择“删除”只有一个条目,你想删除(见下面的截图)

screenshot deleting an entry using SQLite manager

我开始怀疑 Firefox 缓存的图标是独立于其他任何东西的——这是唯一符合观察到的行为的解释。所以我在谷歌上搜索确认,找到了上面的网址。接下来,我将尝试清除特定的额外缓存,看看会发生什么。

更新-解决: 在使用“ SQLite Manager”删除了收藏夹缓存之后,Firefox 附加组件就可以正常工作了。

所以这个秘密就是 Firefox 中的 EXTRA (sqlite) CACHE FOR FAVICONS,它不会被常规的“ Clear CACHE”命令清除。

2017年3月更新: 我检查了这个 Firefox 插件,也检查了 独立的应用程序建议在下面的这个答案,它们都完成了这项工作。根据其 Github 项目页面,SQLite Manager 附加组件最近一次更新是在大约2年前,但是它仍然可以完成在此上下文中需要完成的工作。从 分支项目的人中可以获得更新,但这只是一个附带条件。

我刚才有这个问题,似乎缓存,cookie 和历史没有影响,但我这样做,修复它。

右键单击书签(我的在工具栏菜单中) 2-点击属性 然后点击取消(似乎刷新一些隐藏的缓存)

我确定点击确定/保存将有同样的效果。

很久以前,我知道,但是 FF 31.0/Windows 上的缓存清除程序对我很有用——也许是新的。Options -> network -> cached web content -> clear now.关闭 FF,重启。不要乱搞 SqLite,新的流行图标载入。

然而,还有一个潜在的问题。我试图刷新图标的站点的服务器的 DocumentRoot/var/www。这个网站是在 foo.com/fubar,在那里 var/www/fubar符号链接到其他地方。换句话说,站点比 DocumentRoot低一级。这适用于 Chrome、 Opera 和 IE,但不适用于 Safari 或 FF:

<link rel="shortcut icon" href="/favicon.ico" >

FF 在 /var/www中查找图标,而不是在 /var/www/fubar中。这适用于所有5种浏览器:

<link rel="shortcut icon" href="favicon.ico" >

正面临着类似的问题。只要打破图像缓存。 我正在使用 MVC 剃刀视图。

    var link = document.createElement('link');
link.type = 'image/x-icon';
link.rel = 'shortcut icon';
link.href = "/images/favicon.ico?t=@DateTime.Now.Ticks";
var head = document.head || document.getElementsByTagName('head')[0];
head.appendChild(link);

以下是如何做到这一点,而不失去所有的图标

  1. 得到一个工具,可以打开 SQLite 文件,我使用 用于 SQLite 的数据库浏览器

  2. 在浏览器中打开 about:profiles

  3. 打开 default profile的根文件夹(见附图提示) image

  4. 打开 places.sqlite(Firefox 61 + 上的 favicons.sqlite)文件。

  5. 转到 moz_favicons

  6. 筛选并删除主机名的条目(参见附件中的提示图片) image

  7. 保存文件(见图片) image

  8. 访问你的网站,它会显示新的图标