ChatGPT解决这个技术问题 Extra ChatGPT

Firefox 不显示网站图标

锁定。目前正在解决此问题的内容存在争议。它目前不接受新的答案或交互。

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

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

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
这是版主第五次不得不回滚帖子以删除您一再告知不要放回的相同咆哮。我现在已将其锁定,无法进行所有编辑。

M
Mörre

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

重要的:

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

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

但是,如果您只有缓存问题并且强制刷新适用于您,那么这个问题/问题不是您的!你的答案不是这个问题的答案。

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

注意:您可以完全避免这个问题,就像 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)

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

安装 Firefox 附加组件 SQLite Manager 从 Tools -> SQLite Manager 启动它 单击“Database”菜单项(左上角)并选择“Connect Database”,输入 %APPDATA%\Mozilla\Firefox 打开 Profiles 文件夹并转到您使用的配置文件 选择 places.sqlite 作为要编辑的数据库文件(Firefox 61 及更高版本:favicons.sqlite) 选择 moz_favicons 表。从右键单击上下文菜单中使用“空表”,不要使用“删除表”(表必须存在)或在数据上使用右键单击上下文菜单并仅在您选择的一个条目上选择“删除”想要删除(见下面的截图)

https://i.stack.imgur.com/0mF6n.png

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

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

所以秘密是 Firefox 中 FAVICONS 的额外(sqlite)缓存,常规的“清除缓存”命令不会清除它。

2017 年 3 月更新:我检查了这个 Firefox 插件和 the standalone app suggested in this answer below,两者都完成了这项工作。根据其 Github project page,SQLite 管理器插件最近一次更新是在大约 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”数据库文件)。
E
EML

很久以前,我知道,但 FF 31.0/Windows 上的缓存清除程序对我有用 - 也许它是新的。 Options -> network -> cached web content -> clear now。关闭FF,重新启动。没有搞乱 Sqlite,新的 favicon 加载。

然而,还有另一个潜在的问题。我尝试为其刷新图标的站点的服务器的 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 中查找图标”与此处的主题无关,这只是非常简单和基本的“URL 科学”,是您个人网络服务器设置的问题。
g
gokul

面临类似的问题。只是打破图像的缓存。我正在使用 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);

S
Suraj

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

获取一个可以打开 SQLite 文件的工具,我正在使用 SQLite 的 DB 浏览器转到浏览器中的 about:profiles。打开默认配置文件的根文件夹。 (有关提示,请参见附图)打开 places.sqlite(Firefox 61+ 上的 favicons.sqlite)文件。转到 moz_favicons 表过滤器并删除您的主机名条目(有关提示,请参见附图)保存文件(参见图片)访问您的网站它将显示新的 favicon


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

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

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

我确定单击确定/保存将具有相同的效果。


奇怪的是,该图标显示在书签菜单中。只是不在标签上。