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

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


当前回答

关闭所有Google Chrome窗口

补充一个我在这里看不到的答案。我尝试刷新我的谷歌Chrome缓存,重新加载标签,刷新标签,打开新标签,甚至打开一个新窗口。没有什么对我有用。最终对我有用的是关闭所有的谷歌Chrome窗口(如果你像我一样,你可能有3+个窗口和一堆标签,甚至可能在另一个桌面上有更多的窗口/标签,不要忘记这些!)。关闭所有窗口后,尝试打开一个新窗口并重新加载站点。

希望这对某人有所帮助!

额外提示:如果您想取回所有窗口,可以按“Ctrl+Shift+向上箭头+T”取回窗口和选项卡。

其他回答

当你从谷歌请求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:”标头,客户端浏览器将在该时间戳之后重新请求图标。在进行主动开发时,您可以在将来将过期时间戳设置为一两秒,并始终让它获取该时间戳,尽管这是一个糟糕的长期计划。

下面是我如何使用一个简单的动画favicon和FireFox3.6.13(测试版)来管理它的。它可能也适用于FireFox的其他版本,如果不适用,请告诉我。这基本上是artlung的解决方案,但也可以处理.gif文件:

我通过FTP程序打开,下载了我的favicon.ico和favicon.gif文件,然后从服务器的文件中删除它们。然后我按照artlung的建议在浏览器中打开了它们:http://mysite.com/favicon.ico以及http://mysite.com/favicon.gif一旦这些地址加载并显示404个错误页面(“页面未找到”)然后,我将两个文件上传回服务器,PRESTO-正确的图标立即显示出来。

关闭所有Google Chrome窗口

补充一个我在这里看不到的答案。我尝试刷新我的谷歌Chrome缓存,重新加载标签,刷新标签,打开新标签,甚至打开一个新窗口。没有什么对我有用。最终对我有用的是关闭所有的谷歌Chrome窗口(如果你像我一样,你可能有3+个窗口和一堆标签,甚至可能在另一个桌面上有更多的窗口/标签,不要忘记这些!)。关闭所有窗口后,尝试打开一个新窗口并重新加载站点。

希望这对某人有所帮助!

额外提示:如果您想取回所有窗口,可以按“Ctrl+Shift+向上箭头+T”取回窗口和选项卡。

如果您使用PHP,也可以使用favicon的MD5哈希作为查询字符串:

<link rel="shortcut icon" href="favicon.ico?v=<?php echo md5_file('favicon.ico') ?>" />

这样,Favicon在更改后将始终刷新。

正如评论中所指出的,您还可以使用上次修改的日期而不是MD5哈希来实现相同的目的,并在服务器性能上节省一点时间:

<link rel="shortcut icon" href="favicon.ico?v=<?php echo filemtime('favicon.ico') ?>" />

它可能对少数人有用,但我也遇到了同样的问题,并发现它与文件渗透有关,所以我给了它777权限,它起了作用,当然,在您确定问题存在后,请确保将权限改回更安全的值。