我有一个使用自己的tomcat在本地运行的Grails应用程序,我刚刚更改了一个新的favicon。问题是我无法在任何浏览器中看到它。旧的favicon出现了,或者我根本没有获得图标,但不是我的新图标。我不认为这本身就是Grails问题,更多的是关于favicons的问题。
favicons应该发生什么?它们应该如何工作?我的浏览器中有很多书签,它们有错误的图标,似乎永远不会刷新。如何强制服务器/浏览器停止缓存它们?总是缓存它们似乎很愚蠢,因为它们通常只有16x16。为什么不在每次访问页面时上传它们?这不是一个巨大的开销。
要刷新站点的favicon,您可以强制浏览器使用链接标记和文件名上的查询字符串下载新版本。这在生产环境中尤其有用,可确保您的用户获得更新。
<link rel="icon" href="http://www.yoursite.com/favicon.ico?v=2" />
ON MAC:⌘+ Shift-R或按住Ctrl并单击浏览器中的重新加载按钮。
对于Internet Explorer,还有另一种解决方案:
很可能是网络浏览器问题。您必须从浏览器中删除缓存,关闭浏览器并重新打开它。那应该解决它。
我不相信您的收藏夹会在您重新访问该页面之前刷新您的收藏夹,并假设您之前已清除了浏览器缓存。
您的网络浏览器不会通过互联网自行检查新的图标...谢天谢地。
我尝试了上面的许多事情(重置缓存,刷新,使用链接标记等),我甚至检查了我的.htaccess
文件并重置了ExpiresByType变量。
但这最终适用于Chrome(25.0.x)和Safari(6.0.1):
<link>
标签硬连接mysite.com/favicon.ico
mysite.com
(直到第3步,在相同的选项卡中刷新,不断重现旧图标。)
对于macOS上的Chrome,如果您不想按照此处的建议删除整个Chrome favicon数据库,则只能删除有冲突的图标:
sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/Favicons
select * from favicons where url = 'http://mysite.dev/favicon.ico';
delete from favicons where url = 'http://mysite.dev/favicon.ico';
或者,您可以搜索可以重复使用的模式以删除多个条目:
select * from favicons where url like 'http://mysite.dev%';
delete from favicons where url like 'http://mysite.dev%';
.exit
并点击return to quit sqlite当您从Google请求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:”标头,则客户端浏览器将在该时间戳之后重新请求该图标。在进行活动开发时,您可以将expires时间戳设置为将来的一两秒,并始终让它获取此值,尽管这是一个糟糕的长期计划。
我写这个答案的印象是,这是在Chrome Chrome中刷新favicon所花费的。然而,事实证明这只适用于前五分钟左右,直到图标获得irretrievably lost in Chrome's history synchronization。
您不必清除缓存,重新启动浏览器或重写HTML - 只需更改图标的URL一次,这样浏览器就会忘记以前缓存的图标。
假设您已经通过页面的<link>
中的<head>
元素定义了您的图标,您可以通过在控制台中运行此标准JS单行程来实现:
[].slice.call(document.querySelectorAll('head>link[rel$="icon"]')).map(function(ln){ln.href+='?v=2'});
有关此更高级的实现,可以自动为生产中的最终用户执行此操作,请参阅freshicon.js。
我最近恢复了我的书签,并且正在寻找一种方法来恢复FavIcons,而无需访问每个页面。我的搜索把我带到了这个主题。
对于那些处于类似情况的人,只需下载FAVICON RELOADER插件即可。安装完成后,您将在BOOKMARKS下拉菜单中找到“重新加载收藏夹图标”命令。
https://addons.mozilla.org/en-US/firefox/addon/faviconreloader/?src=api
如果您使用的是PHP ..那么您也可以使用此行。
<link rel="shortcut icon" href="http://www.yoursite.com/favicon.ico?v=<?php echo time() ?>" />
它将在每个页面加载时刷新您的favicon。
如果您只是想调试它以确保它已更改,您只需在/ etc / hosts文件中添加一个虚拟条目并点击新URL即可。该favicon不会被缓存,你可以确保你的新工作正常。
如果不更改favicon的名称,则无法强制用户获取新副本
好吧,经过10分钟的wtf'ing,解决它的简单方法接近于lineofbirds
Chrome版本:68.0.3440.106
只需重新启动Chrome(在您的地址栏中):chrome://restart
这适用于Chrome:
这是chrome bug的变通方法:将rel属性更改为样式表!保留原始链接。奇迹般有效:
我提出了这种解决方法,因为我们还要求能够更新客户的站点/生产代码,而我没有找到任何其他解决方案。
还要确保将完整图像URL放在其相对路径上:
http://www.example.com/images/favicon.ico
并不是:
images/favicon.ico
我知道这是一个非常古老的问题,但它也是一个仍然相关的问题,尽管这些日子只适用于mozilla。 (我不知道什么是资源管理器,因为我们不为非标准浏览器编码)。
如果标题中包含图标标记,Chrome就会表现良好。
虽然mozilla很清楚这个问题,但是像往常一样,他们从来没有修复过烦人的小东西。即使是6年之后。
因此,有两种方法可以强制使用firefox进行图标刷新。
当然,这假定您的ns记录仅包括域名的解析。
以下是我使用简单的动画图标和FireFox 3.6.13(测试版)管理它的方法。它可能适用于其他版本的FireFox,如果没有,请告诉我。它基本上是artlung的解决方案,但也解决了.gif文件:
如果问题仍然存在,尽管应用了上述一些步骤,请尝试重新启动IIS服务器。希望这可以帮助...
简单,
1:我不想乱用代码(ps我的网站构建器不使用代码,它使用“上传文件”按钮,它自己做)
2:我尝试过CTRL + F5,它对我不起作用....
我有一个解决方案:
IE:通过设置cog O清除所有浏览器历史记录和cookie
Chrome:转到X下方右上角的菜单,看起来像是=,然后转到设置,历史记录,清除浏览数据并检查所有适用的框(我做了历史记录,Cookie和清空了开始时间)
只需更改此文件名='favicon1.ico'
请按照以下步骤更改应用图标:
<link rel="icon" type="image/x-icon" href="abc.ico">
或者,使用favicon.ico重命名您的图标文件并将其替换为目录。
这个答案还没有给出,所以我想我会发布它。我环顾网络,并没有找到一个在本地开发中测试favicons的好答案。
在当前版本的chrome(在OSX上),如果您执行以下操作,您将立即获得favicon刷新:
这是我发现在本地更新favicon的最简单方法。
西蒙,我想有一个理由到目前为止没有其他答案被接受。因此,我相信这可能是Grails问题 - 特别是如果你使用'资源插件'。
如果你的插件提供了一个favicon(不合逻辑 - 许多人都这样做),它们可能会覆盖你想要使用的那个 - 假设你的插件本身就是插件。
如果从您的所有插件中删除favicon临时解决问题,那么您很可能会遇到这样的问题:
重命名favicon文件并添加带有新名称的html标头,例如:
<link rel="SHORTCUT ICON" href="http://www.yoursite.com/favicon2.ico" />
如果您使用PHP,您还可以使用favicon的MD5-Hash作为查询字符串:
<link rel="shortcut icon" href="favicon.ico?v=<?php echo md5_file('favicon.ico') ?>" />
这样,Favicon在更改后将始终刷新。
正如评论中指出的那样,您也可以使用上次修改日期而不是MD5-Hash来实现相同的功能并节省服务器性能:
<link rel="shortcut icon" href="favicon.ico?v=<?php echo filemtime('favicon.ico') ?>" />
通过销毁浏览器用于存储旧favicons的文件,您可以强制加载新的文件。
chrome.exe
或firefox.exe
的任务管理器)。Favicons
和Favicons-journal
对于Firefox,请删除favicons.sqlite
这几乎肯定会奏效。如果不:
在Mac OS X上的Chrome中,可以使用favicon缓存删除文件
${user.home}/Library/Application Support/Google/Chrome/Default/Favicons
好吧,开销是开销,但是,不是太大。
此外,浏览器有时对缓存文件“贪婪”。您可以清除缓存和/或重新启动浏览器,并可能会看到更改。如果那失败了......
我的廉价解决方案是:
如果该序列不起作用,则会发生其他事情。
根据浏览器的不同,它们的处理方式不同,但通常我会发现它会转到网站的默认页面并进行硬刷新。 CTRL + F5通常会让它更新。