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

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


当前回答

Chrome的收藏夹支持有问题-忽略这个答案

我写下这个答案的印象是,这就是刷新谷歌Chrome中的收藏夹所需要的。然而,事实证明,这只在前五分钟左右有效,直到图标在Chrome的历史同步中无可挽回地丢失。

原答覆

您不必清除缓存、重新启动浏览器或重写HTML,只需更改图标的URL一次,这样浏览器就会忘记以前缓存的图标。

假设您已经通过页面的<head>中的<link>元素定义了图标,那么您可以通过在控制台中运行这个标准的JS单行程序来实现这一点:

[].slice.call(document.querySelectorAll('head>link[rel$="icon"]')).map(function(ln){ln.href+='?v=2'});

有关可以为生产中的最终用户自动执行此操作的更高级实现,请参阅freshicon.js。

其他回答

请按照以下步骤更改应用程序图标:

在项目中添加.ico文件。转到angular.json,在“项目”->“架构师”->“构建”->“选项”->“资产”中,在这里输入图标文件。请参阅favicon.ico的现有条目,了解如何执行此操作。转到index.html并更新图标文件的路径。例如

<link rel=“icon”type=“image/x-icon”href=“abc.ico”>

或者,用favicon.ico重命名图标文件并将其替换到目录中。

重新启动服务器。硬刷新浏览器,您就可以开始了。

重命名favicon文件并使用新名称添加一个html标题,例如:

<link rel="SHORTCUT ICON" href="http://www.yoursite.com/favicon2.ico" />

当你从谷歌请求favicon时,你可以查看响应标题。

Last-Modified: Fri, 09 Jan 2009 16:35:02 GMT
Date: Thu, 01 Dec 2010 00:00:01 GMT
Expires: Fri, 01 Dec 2011 00:00:01 GMT
Cache-Control: public, max-age=31536000
Age: 7

如果在响应上放置“Expires:”标头,客户端浏览器将在该时间戳之后重新请求图标。在进行主动开发时,您可以在将来将过期时间戳设置为一两秒,并始终让它获取该时间戳,尽管这是一个糟糕的长期计划。

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

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

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

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

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

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

我最近恢复了我的书签,并正在寻找一种方法来恢复FavIcons,而无需访问每个页面。我的搜索使我找到了这个线索。

对于那些处于类似情况的用户,只需下载FAVICON RELOADER插件即可。安装后,您将在BOOKMARKS下拉菜单中找到“重新加载收藏夹图标”命令。

https://addons.mozilla.org/en-US/firefox/addon/faviconreloader/?src=api