如何强制使用favicon刷新?

时间:2010-02-05 17:09:04

标签: favicon

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

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

31 个答案:

答案 0 :(得分:2005)

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

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

答案 1 :(得分:803)

好的,经过10分钟的wtf'ing,修复它的简单方法接近于lineofbirds

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

答案 2 :(得分:254)

这个答案还没有给出,所以我想我会发布它。我环顾网络,并没有找到一个很好的答案来测试本地开发中的favicons。

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

  1. 将鼠标悬停在标签
  2. 右键单击
  3. 选择重新加载
  4. 您的favicon现在应该刷新
  5. 这是我发现在本地刷新图标的最简单方法。

答案 3 :(得分:54)

重命名favicon文件并添加带有新名称的html标头,例如:

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

答案 4 :(得分:53)

如果你使用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') ?>" />

答案 5 :(得分:48)

通过销毁浏览器用于存储旧favicons的文件,您可以强制加载新的文件。

  1. 关闭浏览器。确保不再运行浏览器进程(例如,检查private void showDatePickerDialog() { DatePickerDialog datepickerdialog = null; datepickerdialog = new DatePickerDialog(this,datepickerdialog.OnDateSetListener(MainActivity.this),day,month,year); datepickerdialog.show(); } chrome.exe的任务管理器。)
  2. 导航到浏览器存储用户文件的位置:
  3. 删除favicon缓存。
    • 对于Chrome,请移除firefox.exeFavicons
    • 对于Firefox,请移除Favicons-journal
  4. 这几乎肯定会奏效。如果不是:

    • 可能性1:浏览器更新改变了favicon缓存的工作方式。请使用新说明编辑此答案。
    • 可能性2:您的favicon问题与过度缓存无关。它可能是一个资源加载问题 - 使用开发人员工具,确保新的favicon正确下载。

答案 6 :(得分:29)

在Mac OS X上的Chrome中,可以删除带有favicon缓存的文件

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

答案 7 :(得分:16)

嗯,开销是开销,但是,不是太大。

此外,浏览器有时对缓存文件“贪婪”。您可以清除缓存和/或重新启动浏览器,并可能会看到更改。如果那失败了......

我的廉价解决方案是:

  1. 在浏览器中的http://example.com/favicon.ico访问您的文件。
  2. 从您的webroot中删除favicon.ico。
  3. 在浏览器中再次访问http://example.com/favicon.ico,验证它是否丢失。
  4. 将新的上传到您的webroot。
  5. 在浏览器中再次访问http://example.com/favicon.ico,验证它是新的。
  6. 如果该序列不起作用,则会发生其他事情。

答案 8 :(得分:14)

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

答案 9 :(得分:10)

ON MAC: + Shift - R 或按住 Ctrl 并单击浏览器中的重新加载按钮。

答案 10 :(得分:9)

很可能是网络浏览器问题。您必须从浏览器中删除缓存,关闭浏览器并重新打开它。那应该解决它。

我不相信您的收藏夹会在您重新访问该页面之前刷新您的收藏夹,并假设您之前已清除了浏览器缓存。

您的网络浏览器不会通过互联网自行检查新的图标...谢天谢地。

答案 11 :(得分:9)

对于Internet Explorer,还有另一种解决方案:

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

答案 12 :(得分:8)

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

  1. 退出Chrome
  2. 加载favicon数据库(在此处使用sqlite):
  3. SELECT q1.id, q1.eventdate, q1.num_result " _ & "FROM test AS q1 INNER JOIN test AS q2 ON ( q1.id = q2.id ) " _ & "AND ( q1.eventdate <= q2.eventdate ) AND q1.auditflag=1 " _ & "WHERE q1.num_result > 0 " _ & "GROUP BY q1.id, q1.eventdate, q1.num_result " _ & "HAVING COUNT(*) < 6 " _ & "ORDER BY q1.id, q1.eventdate DESC

    1. 搜索导致问题的文件
    2. sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/Favicons

      1. 如果您对输出感到满意:
      2. select * from favicons where url = 'http://mysite.dev/favicon.ico';

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

        1. 搜索导致问题的多个文件
        2. delete from favicons where url = 'http://mysite.dev/favicon.ico';

          1. 如果你对这回归感到满意的话,那就再说一遍:
          2. select * from favicons where url like 'http://mysite.dev%';

            1. 输入delete from favicons where url like 'http://mysite.dev%';并点击返回退出sqlite
            2. 重新启动Chrome

答案 13 :(得分:8)

尝试在新标签页中打开

我尝试了很多上面的事情(重置缓存,刷新,使用链接标记等),我甚至检查了我的.htaccess文件并重置了ExpiresByType变量。

但这最终在Chrome(25.0.x)和Safari(6.0.1)中对我有用:

  1. 刷新缓存
  2. 将favicon与<link>代码
  3. 进行硬链接
  4. 导航至mysite.com/favicon.ico
  5. 在新标签页中打开mysite.com
  6. (直到第3步,在相同的标签中刷新,继续复制旧图标。)

答案 14 :(得分:6)

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

答案 15 :(得分:5)

Chrome的favicon支持是错误的 - 忽略了这个答案

我写这个答案的印象是,这是刷新Google Chrome中的favicon所需要的。但是,事实证明这只适用于前五分钟左右,直到图标获得irretrievably lost in Chrome's history synchronization

原始答案

您不必清除缓存,重新启动浏览器,重写HTML - 您只需更改图标的网址一次,以便浏览器忘记以前缓存的图标。

假设您已通过网页<link>中的<head>元素定义了自己的图标,则可以通过运行此标准-JG one-liner <来实现/ strong>在控制台中:

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

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

答案 16 :(得分:4)

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

对于那些处于类似情况的人,只需下载FAVICON RELOADER插件即可。安装完成后,您将在BOOKMARKS下拉菜单中找到“reload favorite icons”命令。

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

答案 17 :(得分:4)

如果您使用的是PHP ..那么您也可以使用此行。

<link rel="shortcut icon" href="http://www.yoursite.com/favicon.ico?v=<?php echo time() ?>" />

它会在每次页面加载时刷新你的图标。

答案 18 :(得分:3)

如果您只是想调试它以确保它已更改,您只需在/ etc / hosts文件中添加一个虚拟条目并点击新URL即可。该favicon不会被缓存,你可以确保你的新工作正在运行。

如果不更改favicon的名称,则无法强制用户获取新副本

答案 19 :(得分:2)

Chrome版本:68.0.3440.106

只需重新启动Chrome(在您的地址栏中): chrome://restart

答案 20 :(得分:2)

这适用于Chrome:

    Mac上的
  • :删除文件

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

  • Windows上的
  • :删除文件

    C:\ Users [username] \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Favicons C:\ Users [用户名] \ AppData \ Local \ Google \ Chrome \用户数据\默认\ Favicons-journal

source

答案 21 :(得分:1)

这是chrome bug的变通方法:将rel属性更改为样式表!保留原始链接。像魅力一样:

我想出了这个解决方法,因为我们还要求能够更新客户的站点/生产代码,而我没有找到任何其他解决方案。

答案 22 :(得分:1)

另外,请确保将完整图片网址放在其相对路径中:

http://www.example.com/images/favicon.ico

而不是:

images/favicon.ico

答案 23 :(得分:1)

我知道这是一个非常古老的问题,但它也是一个仍然相关的问题,尽管这些日子只适用于mozilla。 (我不知道什么是资源管理器,因为我们不为非标准浏览器编码)。

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

虽然mozilla很清楚这个问题,但是他们一如既往地从未修复过烦人的小东西。甚至6年后。

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

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

  2. 手动输入网址栏中的域名 - 不要使用http或www 只是域名(mydomain.com)。

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

答案 24 :(得分:0)

只需更改此文件名='favicon1.ico'

答案 25 :(得分:0)

简单,

1:我不想乱用代码(ps我的网站构建器不使用代码,它使用“上传文件”按钮,它自己完成)

2:我尝试了 CTRL + F5 ,但它对我不起作用....

我有一个解决方案:

IE:通过转到设置cog O

清除所有浏览器历史记录和Cookie

Chrome:转到X下方右上角的菜单,看起来像是=,然后转到设置,历史记录,清除浏览数据并检查所有适用的框(我做了历史记录,Cookie并清空了从一开始就抓住了)

答案 26 :(得分:0)

如果上述步骤尝试重新启动IIS服务器,问题仍然存在。希望这会有所帮助...

答案 27 :(得分:0)

以下是我使用简单的动画图标和FireFox 3.6.13(测试版)进行管理的方法。它可能适用于其他版本的FireFox,如果没有,请告诉我。 它基本上是artlung的解决方案,但也解决了.gif文件:

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

答案 28 :(得分:-1)

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

  1. 在项目中添加.ico文件。
  2. 转到angular.json,然后在“项目”->“建筑师”->“构建”->“选项”->“资产”中创建一个图标文件条目。请参阅favicon.ico的现有条目以了解操作方法。
  3. 转到index.html并更新图标文件的路径。例如,

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

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

  1. 重新启动服务器。
  2. 硬性刷新浏览器,一切顺利。

答案 29 :(得分:-3)

西蒙,我想有一个理由到目前为止没有其他答案被接受。因此,我相信这个可能仍然是Grails问题 - 特别是如果您正在使用'Resources Plugin'。

如果你的插件提供了一个favicon(不合逻辑 - 很多人都这么做),它们可能会覆盖你想要使用的那个 - 假设你的插件本身就是插件。

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

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

答案 30 :(得分:-5)

它可能只对少数人有用,但我遇到了同样的问题并发现它与文件渗透有关,所以我给了它777许可它当然有效,当然你确定了它存在问题,请务必将权限更改为更安全的值。