我有一个Grails应用程序使用它自己的tomcat在本地运行,我刚刚将favicon改成了一个新的。问题是我在任何浏览器中都看不到它。旧的收藏夹出现了,或者我根本没有收藏夹,但没有我的新收藏夹。我不认为这本身是圣杯的问题,更多的是收藏夹的问题。
favicon会发生什么?他们应该如何工作?我的浏览器中有许多书签,它们的图标错误,而且似乎永远不会被刷新。如何强制服务器/浏览器停止缓存它们?考虑到它们通常只有16x16,总是缓存它们似乎很愚蠢。为什么不在每次访问页面时都上传它们呢?这并不是一个巨大的开销。
对于macOS上的Chrome,如果你不想像这里已经建议的那样删除整个Chrome favicon数据库,你可以只删除冲突的图标:
退出Chrome加载favicons数据库(此处使用sqlite):
sqlite3~/Library/Application\Support/Google/Chrome/Default/Favicons
搜索导致问题的文件
从收藏夹中选择*,其中url='http://mysite.dev/favicon.ico';
如果您对输出满意:
从收藏夹中删除url='http://mysite.dev/favicon.ico';
或者,您可以搜索可以重复使用以删除多个条目的模式:
搜索导致问题的多个文件
从url喜欢的收藏夹中选择*http://mysite.dev%';
同样,如果你对这样的回报感到满意:
从url类似的收藏夹中删除'http://mysite.dev%';
键入.ext并单击return退出sqlite重新启动Chrome
在文件路径末尾使用查询字符串。每个生成的查询字符串变量值必须不同。
如果以前的版本是:
<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" />
当你从谷歌请求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:”标头,客户端浏览器将在该时间戳之后重新请求图标。在进行主动开发时,您可以在将来将过期时间戳设置为一两秒,并始终让它获取该时间戳,尽管这是一个糟糕的长期计划。