我如何强制一个favicon刷新

我有一个使用自己的tomcat在本地运行的Grails应用程序,我刚刚更改了一个新的favicon图标。 问题是,我无法在任何浏览器中看到它。 旧图标显示,或我根本没有任何图标,但不是我的新图标。 我不认为这本身就是一个Grails问题,更多的问题与favicons。

什么是应该与favicon发生? 他们应该如何工作? 在我的浏览器中有许多书签有错误的图标,它们似乎从未刷新过。 如何强制服务器/浏览器停止caching? 总是caching它们看起来很愚蠢,因为它们通常只有16×16。 为什么不上传每个访问页面,这不是一个巨大的开销。

要刷新您网站的图标,您可以强制浏览器使用链接标记和文件名查询string下载新版本。 这在生产环境中特别有用,以确保您的用户获得更新。

 <link rel="icon" href="http://www.yoursite.com/favicon.ico?v=2" /> 

好吧,10分钟后,修复它的简单方法就是接近线鸟

  1. inputwww.yoursite.com/favicon.ico(或www.yoursite.com/apple-touch-icon.png等)
  2. 回车
  3. 按Ctrl + F5
  4. 重新启动浏览器(IE,Firefox)

这个答案还没有给出,所以我想我会张贴它。 我查看了networking上的所有内容,在本地开发中没有findtesting网站图标的好方法。

在当前版本的Chrome(在OSX上),如果您执行以下操作,您将获得即时的favicon更新:

  1. 将鼠标hover在标签上
  2. 右键点击
  3. select重新加载
  4. 现在应该刷新你的图标了

这是我发现在本地刷新favicon的最简单的方法。

重命名图标文件并添加一个带有新名称的html标题,例如:

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

如果你使用PHP,你也可以使用favicon的MD5-Hash作为查询string:

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

这样,Favicon在更改时总是会刷新。

正如在注释中指出的那样,您也可以使用上次修改date而不是MD5-Hash来实现相同的function,并节省一点服务器性能:

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

在Mac OS X上的Chrome中,可以使用faviconcaching删除文件

 ${user.home}/Library/Application Support/Google/Chrome/Default/Favicons 

如果在窗口和使用铬,(退出任务栏, 杀死所有实例 ),然后去…

C:\Users\your_username\AppData\Local\Google\Chrome\User Data\Default

要么…

%appData%/../Local/Google/Chrome/User Data/Default

并删除文件Favicons-journal, Favicons

然后启动Chrome


由于这个解决scheme涉及到重新启动浏览器,所以一旦你成功,你可能不会回到这里。所以现在考虑投票。相信我会工作,而且你总是可以删除你的投票

那么,开销是开销,但是,不是太大。

另外,浏览器有时候对于caching文件“贪婪”。 您可以清除caching并/或重新启动浏览器,并可能看到更改。 如果这失败了,但…

我廉价的解决scheme是:

  1. 访问http://example.com/favicon.ico在您的浏览器中的文件。;
  2. 从您的webroot中删除favicon.ico。
  3. 在浏览器中再次访问http://example.com/favicon.ico ,validation是否丢失。
  4. 上传一个新的到你的webroot。
  5. 再次访问http://example.com/favicon.ico在浏览器中,validation它是新的。;

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

对于Internet Explorer,还有另一个解决scheme:

  1. 打开Internet Explorer。
  2. 点击菜单>工具>互联网选项。
  3. 点击一般>临时互联网文件>“设置”button。
  4. 点击“查看文件”button。
  5. find您的旧favicon.ico文件并将其删除。
  6. 重新启动浏览器(Internet Explorer)。

更可能是一个networking浏览器的问题。 您将不得不从浏览器中删除caching,closures浏览器并重新打开。 这应该解决它。

我不相信你的collections夹图标会刷新你的collections夹,直到你重新访问该页面,并假设你已经清除了浏览器caching。

您的networking浏览器不会去互联网自己检查一个新的图标…谢天谢地。

根据不同的浏览器,他们的处理方式不同,但通常我会发现转到网站的默认页面,并进行硬刷新。 CTRL + F5,通常会让它更新。

尝试在新标签中打开

我尝试了许多以上的东西(重置caching,刷新,使用链接标签等),我甚至检查了我的.htaccess文件并重置了ExpiresByTypevariables。

但是这终于在Chrome(25.0.x)和Safari(6.0.1)中为我工作了:

  1. 刷新caching
  2. 将favicon与<link>标记硬连接
  3. 浏览至mysite.com/favicon.ico
  4. 在新选项卡中打开mysite.com

(直到第3步,在同一个选项卡中刷新,继续重现旧图标。)

当您向Google请求collections夹图标时,您可以查看回复标题。

 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:”标题,客户端浏览器将在该时间戳之后重新请求该图标。 在进行积极的开发的同时,您可以将过期时间戳设置为将来的一到两秒钟,并始终将其取出,尽pipe这是一个糟糕的长期计划。

ON MAC:Command-Shift-R或按住CONTROL并点击浏览器中的重新载入button。

对于macOS上的Chrome,如果您不想按照此处的build议删除整个Chrome图标数据库,则只能删除冲突的图标:

  1. 退出Chrome
  2. 加载favicons数据库(在这里使用sqlite):

sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/Favicons

  1. search导致问题的文件

select * from favicons where url = 'http://mysite.dev/favicon.ico';

  1. 如果你对输出满意:

delete from favicons where url = 'http://mysite.dev/favicon.ico';


或者 ,您可以search可以重复使用以删除多个条目的模式:


  1. search导致问题的多个文件

select * from favicons where url like 'http://mysite.dev%';

  1. 如果你对这个回报感到满意,

delete from favicons where url like 'http://mysite.dev%';


  1. 键入.exit并点击返回来退出sqlite
  2. 重新启动Chrome

Chrome的favicon支持是越野车 – 无视这个答案

我写这个答案的印象是,这是在谷歌Chrome浏览器中刷新图标的过程。 但是,事实certificate,这只能在前五分钟左右,直到Chrome的历史同步中的图标无法挽回 。

原始答案

您不必清除caching,重新启动浏览器重写HTML,只需要更改图标的URL 一次 ,以便浏览器将忘记以前caching的图标。

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

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

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

我最近恢复了我的书签,并正在寻找一种方法来恢复FavIcons而不访问每个页面。 我的search把我带到这个线程。

对于类似的情况,只需下载FAVICON RELOADER插件。 一旦安装,您将在BOOKMARKS下拉菜单中find“重新加载最喜欢的图标”命令。

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() ?>" /> 

它会刷新每个网页加载您的图标。

如果你只是想debugging它,以确保它已经改变,你可以添加一个虚拟条目到你的/ etc / hosts文件中,然后点击新的URL。 该图标不会被caching,你可以确保你新的工作。

改变图标的​​名称的缺乏,你不能强迫你的用户获得一个新的副本

这是铬错误的解决方法:将rel属性更改为样式表! 保持原来的链接。 奇迹般有效:

我提出了这个解决方法,因为我们也有一个要求,能够更新客户的网站/生产代码,我没有find任何其他解决scheme的工作。

还要确保你把完整的图像url不只是其相对path:

 http://www.example.comhttp://img.dovov.comfavicon.ico 

并不是:

 images/favicon.ico 

我知道这是一个非常古老的问题,但它也是相关的,尽pipe这些日子只适用于Mozilla。 (我不知道什么浏览器做我们不编码非标准的浏览器)。

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

尽pipeMozilla对这个问题非常了解,但是像往常一样,他们从来没有修复那些烦人的小东西。 甚至6年后。

所以,有两种方法可以强制使用Firefox进行图标刷新。

  1. 让所有的客户端卸载Firefox。 然后重新安装。

  2. 手动inputurl栏中的域名 – 不要使用http或www只是域名(mydomain.com)。

这当然假设你的nslogging只包含域名parsing。

下面是我用一个简单的animation图标和FireFox 3.6.13(testing版)来pipe理它。它也可能适用于其他版本的FireFox,让我知道如果它不。 这基本上就是artlung的解决scheme,但是也可以使用.gif文件:

  1. 我通过FTP程序打开,下载了我的favicon.ico和favicon.gif文件,
  2. 然后从我的服务器的文件中删除它们。
  3. 然后,我打开他们在我的浏览器,如artlungbuild议: http ://mysite.com/favicon.ico和http://mysite.com/favicon.gif一旦这些地址加载和显示404错误页面(“页面找不到”);
  4. 我然后上传两个文件到我的服务器,PRESTO – 正确的图标即时显示。

如果问题仍然存在,请尝试重新启动IIS服务器 。 希望这可以帮助…

西蒙,我想有一个原因,到目前为止还没有其他的答案被接受。 因此,我相信这可能是一个Grails问题 – 尤其是如果您使用“资源插件”。

如果你的插件提供了一个图标(这在许多情况下是不合逻辑的),它们可能会覆盖你想要使用的图标 – 因为你的插件本身就是插件。

如果从所有插件中删除图标暂时解决了这个问题,那么你很可能遇到这种情况:

http://jira.grails.org/browse/GPRESOURCES-134

简单,

1:我不想摆弄代码(ps我的网站build设者不使用代码,它使用“上传文件”button,它本身)

2:我试过CTRL + F5,它不适合我,所以….

我有一个解决scheme:

IE浏览器:通过转到设置齿轮O来清除所有浏览器历史logging和Cookie

Chrome浏览器:进入X下方右上angular的菜单,看起来像一个=,然后去设置,历史,清除浏览数据,并检查所有适用的框(我做了历史logging,cookies和清空catche从开始的时间)

看到我的回答https://stackoverflow.com/a/45301651/661584生成器包括刷新选项,作为接受的答案相同; – 也sorting大量的其他问题。 谢谢

这对于几个人可能是有用的,但是我也遇到了同样的问题,并且发现它与文件渗透有关,所以我给了它一个777的许可,并且它工作了,当然在你确定它存在的问题之后,确保将权限更改为更安全的值。