【问题标题】:favicon not displayed by FirefoxFirefox 不显示网站图标
【发布时间】:2012-01-26 19:28:09
【问题描述】:

确实知道这个问题仅在这个网站上就被问了至少一千次,但我已经阅读了很多这些主题,我认为自己知识渊博,很少提出任何问题,而是更喜欢自己做研究。

然而,这个问题太奇怪了,没有真正的启蒙希望(因为这个问题已经被经常讨论,但我仍然无法从那里阅读),这是我的问题:

favicon.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”之后就可以了。

这是请求图标时服务器发送的内容,因为有些人要求这样做。 我不知道为什么这会很有用,因为 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

【问题讨论】:

  • 评论不用于扩展讨论;这个对话是moved to chat
  • 这是版主第五次回滚帖子以删除您一再告知不要放回的相同咆哮。我现在已锁定它来自所有编辑。

标签: firefox favicon


【解决方案1】:

如何在不丢失所有网站图标的情况下做到这一点

  1. 获取一个可以打开SQLite文件的工具,我用的是DB browser for SQLite

  2. 在浏览器中转到about:profiles

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

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

  5. 转到moz_favicons

  6. 过滤并删除您的主机名条目(有关提示,请参见附图)

  7. 保存文件(见图)

  8. 访问您的网站会显示新的网站图标

【讨论】:

  • 是的,它也同样有效。我刚刚尝试了我最初提出的工具和你的工具,并且处理非常相似,尽管至少在我刚尝试时主观上,简要地说,我更喜欢 Firefox 插件,但没有太大的明显区别。
  • 顺便说一下,仅供参考:我冒昧地从您的答案顶部删除了指向我在答案中发布的 URL 的 archive.org 链接,因为我现在自己将它包含在我的答案中,谢谢提示!我认为这没关系,因为您明确表示这是“接受的答案”中的链接,否则我不会梦想以这种方式干预其他人的文本。
  • 这个答案在火狐去掉SQLite引擎的接口后还有效吗? how to install sqlite manager addon in firefox quantum (browser version 57)
  • @AhmedMostafaAbdel-Baky 你在这里直接编辑 SQLite 文件,所以我相信它应该可以工作
  • 此解决方案适用于 Firefox 61,但我必须打开并编辑“favicons.sqlite”数据库文件(而不是“places.sqlite”数据库文件)。
【解决方案2】:

首先,通过直接加载网站图标 URL(将其放入浏览器的 URL 栏中)并强制刷新它,确保您没有“正常”缓存问题。如果这样做了,就不需要下面的复杂解决方案了。



重要提示:

我原来的问题不可能是缓存问题:首先,我确实清除了缓存,其次,如上所述,我已经成功加载了图标文件通过其 URL http://website/favicon.ico

进入 Firefox

所以我确实(确实)在直接加载时在浏览器中获得了正确的图标!但我仍然(有)错误的图标显示为“favicon”。直接加载图标文件是(或曾经是)独立在实际网站图标位置显示(当然第一次加载时除外)。

但是,如果只有缓存问题并且强制刷新对您有效,那么这个问题/问题不是您的问题!而你的答案不是this issue的答案。

人们不应该忽视事实。当您被大量已经回答和/或无用的问题轰炸时,问题的质量会暂时受到影响,存档也会受到影响。 我不得不与仍然坚持强制刷新是答案的人战斗,这真是令人惊讶!



注意:你可以完全避免这个问题,就像 StackOverflow 一样使用缓存拦截器 URL,它们的网站图标 URL 以 .../img/favicon.ico?v=4f32ecc8f43d 结尾。

如果正常的缓存清除措施失败(就像他们对我所做的那样),这里会给出答案:"Clearing All Favicons From Firefox 3 Cache [How-To]" -- 和 here is an archive.org version of the link (probably slower, but it won't go away)

该页面的步骤在此处复制:

  1. 安装Firefox add-on SQLite Manager
  2. 从工具启动它 -> SQLite 管理器
  3. 点击“数据库”菜单项(左上角)选择“连接数据库”,输入%APPDATA%\Mozilla\Firefox
  4. 打开Profiles 文件夹并转到您使用的配置文件
  5. 选择places.sqlite作为要编辑的数据库文件(Firefox 61 及更高版本:favicons.sqlite
  6. 要么选择moz_favicons 表。从右键单击上下文菜单中使用“空表”,不要使用“删除表”(表必须存在)使用右键单击上下文菜单数据并仅在您要删除的一个条目上选择“删除”(请参见下面的屏幕截图)

我开始怀疑 Firefox 将网站图标与其他所有内容分开缓存 - 这是与观察到的行为相匹配的唯一解释。所以我用谷歌搜索确认并找到上面的网址。接下来,我将尝试清除特定的额外缓存,看看会发生什么。

更新 - 已解决:使用“SQLite Manager”Firefox 插件删除网站图标缓存后,一切正常。

所以秘密是 Firefox 中的 EXTRA (sqlite) CACHE FOR FAVICONS,它不能被常规的“清除缓存”命令清除。

2017 年 3 月更新:我检查了这个 Firefox 插件和the standalone app suggested in this answer below,两者都完成了这项工作。 SQLite 管理器插件根据其Github project page 上次更新是在大约 2 年前,但在这种情况下它仍然可以满足它的需要。 people who have forked the project 提供了更新,但这只是一个问题。

【讨论】:

  • 该工具的功能并不比 Firefox 已经内置的更多:“临时文件、历史记录、cookies、下载历史记录、表单历史记录”。
  • 我知道它有点旧,但我发现在 Chrome 中,您可以简单地将浏览器指向网站图标本身,因此您可以转到http://www.yourwebsite.com/favicon.ico,然后您的网站图标缓存应该已经刷新
  • @PhilippeGilbert 虽然这可能适用于 Chrome,但不适用于 Firefox。
  • 谢谢你的回答,我以为我疯了!我不知道 Firefox 处理网站图标缓存的方式与其他方式不同。
  • 对于 Firefox 61,您需要打开并编辑“favicons.sqlite”数据库文件(而不是“places.sqlite”数据库文件)。
【解决方案3】:

面临类似的问题。只是打破图像的缓存。 我正在使用 MVC Razor 视图。

    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);

【讨论】:

    【解决方案4】:

    很久以前,我知道,但 FF 31.0/Windows 上的缓存清除程序对我有用 - 也许它是新的。 Options -&gt; network -&gt; cached web content -&gt; 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" >
    

    【讨论】:

    • 我刚刚尝试使用 FF 52 并从网络设置页面清除缓存以及使用隐私选项中的“清除最近浏览历史记录”并没有触及 SQLite 数据库,它仍然没有改变。您的第二条评论 “FF 在 /var/www 中查找 favicon” 与这里的主题无关,这只是非常简单和基本的“URL 科学”,是您个人网络服务器的问题设置。
    【解决方案5】:

    我刚才遇到了这个问题,似乎缓存、cookie 和历史记录都没有效果,但我做了这个修复了它。

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

    我确定单击确定/保存会产生相同的效果。

    【讨论】:

    • 奇怪的是,图标显示在书签菜单中。只是不在标签上。
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多