如何强制使用favicon刷新?

问题描述 投票:1465回答:31

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

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

favicon
31个回答
2010
投票

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

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

10
投票

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


9
投票

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

  1. 打开Internet Explorer。
  2. 单击菜单>工具> Internet选项。
  3. 单击常规>临时Internet文件>“设置”按钮。
  4. 单击“查看文件”按钮。
  5. 找到您的旧favicon.ico文件并将其删除。
  6. 重新启动浏览器(Internet Explorer)。

9
投票

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

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

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


8
投票

尝试在新标签页中打开

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

但这最终适用于Chrome(25.0.x)和Safari(6.0.1):

  1. 刷新缓存
  2. 将favicon与<link>标签硬连接
  3. 导航到mysite.com/favicon.ico
  4. 在新标签页中打开mysite.com

(直到第3步,在相同的选项卡中刷新,不断重现旧图标。)


8
投票

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

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

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

  1. 搜索导致问题的文件

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

  1. 如果您对输出感到满意:

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


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


  1. 搜索导致问题的多个文件

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

  1. 如果您对此返回的内容感到满意,请再次:

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


  1. 输入.exit并点击return to quit sqlite
  2. 重启Chrome

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


5
投票

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

我写这个答案的印象是,这是在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


4
投票

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

对于那些处于类似情况的人,只需下载FAVICON RELOADER插件即可。安装完成后,您将在BOOKMARKS下拉菜单中找到“重新加载收藏夹图标”命令。

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


4
投票

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

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

它将在每个页面加载时刷新您的favicon。


3
投票

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

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


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)

3
投票

Chrome版本:68.0.3440.106

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


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 [username] \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Favicons-journal

source


1
投票

这是chrome bug的变通方法:将rel属性更改为样式表!保留原始链接。奇迹般有效:

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


1
投票

还要确保将完整图像URL放在其相对路径上:

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

并不是:

images/favicon.ico

1
投票

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

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

虽然mozilla很清楚这个问题,但是像往常一样,他们从来没有修复过烦人的小东西。即使是6年之后。

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

  1. 让所有客户端卸载Firefox。然后重新安装。
  2. 手动输入网址栏中的域名 - 不要仅使用http或www域名(mydomain.com)。

当然,这假定您的ns记录仅包括域名的解析。


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 - 立即显示正确的图标。

0
投票

如果问题仍然存在,尽管应用了上述一些步骤,请尝试重新启动IIS服务器。希望这可以帮助...


0
投票

简单,

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

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

我有一个解决方案:

IE:通过设置cog O清除所有浏览器历史记录和cookie

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


0
投票

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


-1
投票

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

  1. 在项目中添加.ico文件。
  2. 转到angular.json并在“projects” - >“架构师” - >“构建” - >“选项” - >“资产”中,这里为您的图标文件创建一个条目。请参阅favicon.ico的现有条目以了解如何执行此操作。
  3. 转到index.html并更新图标文件的路径。例如,

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

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

  1. 重启服务器。
  2. 硬刷新浏览器,你很高兴。

255
投票

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

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

  1. 将鼠标悬停在标签上
  2. 右键点击
  3. 选择重新加载
  4. 您的favicon现在应该刷新

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


-3
投票

西蒙,我想有一个理由到目前为止没有其他答案被接受。因此,我相信这可能是Grails问题 - 特别是如果你使用'资源插件'。

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

如果从您的所有插件中删除favicon临时解决问题,那么您很可能会遇到这样的问题:

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


54
投票

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

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

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

49
投票

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

  1. 关闭浏览器。确保不再运行浏览器进程(例如,检查chrome.exefirefox.exe的任务管理器)。
  2. 导航到浏览器存储用户文件的位置: 对于Chrome,请访问Chrome data directory。 对于Firefox,请转到Firefox profile folder
  3. 删除favicon缓存。 对于Chrome,请删除FaviconsFavicons-journal 对于Firefox,请删除favicons.sqlite

这几乎肯定会奏效。如果不:

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

29
投票

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

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

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,验证它是新的。

如果该序列不起作用,则会发生其他事情。


14
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.