我有一个Grails应用程序使用它自己的tomcat在本地运行,我刚刚将favicon改成了一个新的。问题是我在任何浏览器中都看不到它。旧的收藏夹出现了,或者我根本没有收藏夹,但没有我的新收藏夹。我不认为这本身是圣杯的问题,更多的是收藏夹的问题。

favicon会发生什么?他们应该如何工作?我的浏览器中有许多书签,它们的图标错误,而且似乎永远不会被刷新。如何强制服务器/浏览器停止缓存它们?考虑到它们通常只有16x16,总是缓存它们似乎很愚蠢。为什么不在每次访问页面时都上传它们呢?这并不是一个巨大的开销。


当前回答

在文件路径末尾使用查询字符串。每个生成的查询字符串变量值必须不同。

如果以前的版本是:

<link rel=“icon”href=“http://example.com/favicon.ico?v=v1" />

OR

<link rel=“icon”href=“http://example.com/favicon.ico?v=stringA" />

那么下一个构建应该是:

<link rel=“icon”href=“http://example.com/favicon.ico?v=v2" />

OR

<link rel=“icon”href=“http://example.com/favicon.ico?v=stringB" />

其他回答

如果您只是想调试它以确保它已更改,那么只需在/etc/hosts文件中添加一个虚拟条目并点击新的URL即可。这个收藏夹不会被缓存,你可以确保你的新收藏夹正常工作。

除了更改收藏夹图标的名称之外,您无法强制用户获取新副本

我知道这是一个非常古老的问题,但也是一个仍然相关的问题,尽管现在只适用于mozilla。(我不知道浏览器做什么,因为我们不为非标准浏览器编写代码)。

如果在标题中包含图标标记,则Chrome表现良好。

尽管mozilla很清楚这一问题,但像往常一样,他们从不解决令人讨厌的小问题。甚至在6年后。

因此,有两种方法可以使用firefox强制图标刷新。

让所有客户端卸载firefox。然后重新安装。在url栏中手动键入域-不要使用http或www只有域(mydomain.com)。

当然,这假设您的ns记录仅包含域名的解析。

这是chrome bug的解决方法:将rel属性更改为样式表!但保留原始链接。就像一个魅力:

我提出了这个解决方案,因为我们还需要能够更新客户的站点/生产代码,我没有找到任何其他解决方案。

嗯,开销是开销,但是的,不会太大。

此外,浏览器有时对缓存文件“贪婪”。您可以清除缓存和/或重新启动浏览器,可能会看到更改。如果失败了。。。

我的廉价解决方案是:

访问您的文件:http://example.com/favicon.ico在浏览器中。从webroot中删除favicon.ico。参观http://example.com/favicon.ico再次在浏览器中,验证它是否丢失。将新文件上载到您的webroot。参观http://example.com/favicon.ico再次在浏览器中,验证它是新的。

如果这个顺序不起作用,那么其他事情正在发生。

对于Internet Explorer,还有另一种解决方案:

打开internet explorer。单击菜单>工具>internet选项。单击常规>临时internet文件>“设置”按钮。单击“查看文件”按钮。找到旧的favicon.ico文件并将其删除。重新启动浏览器(internet explorer)。