每日鸡汤,每个你想要学习的念头都是未来的你向自己求助
终极解决方案,在这里都有 点击查看
今天我们来一次性解决一个问题,关于favicon.ico的问题。
favicon.ico 首先是一个图片,是网页tab头部显示的一个小图标
设置的方法是在head标签中加入以下代码
- <head>
- <link rel="icon" href="favcion.ico" type="image/x-icon"></link>
- </head>
注意这里面的rel="icon" 和 type ="image/x-icon"是固定写法
href是一个链接,一般写成href="favcion.ico"这是因为默认将名字为favcion.ico放在了项目的根目录,也就是static目录,所以,如果你想用别的图片也可以,改一下名字,但是不能改路径,因为这个图片必须保证可以在url中访问(todo)。
那么问题来了,在chrome浏览器中有的时候更换这个图片,没有生效,那是因为有缓存,解决办法在这里点击查看
1、给href加上版本,比如href="favicon.ico?v=2", 这个方法适用于很多图片的缓存问题,比如svg icon,每次更新都更改一下后面的版本号。
2、手动删除chrome浏览器的favcion.ico数据缓存,这个可能有点麻烦,但是超级有效,还不用每次都更改版本号,但是不好的是,用户不能每次都自己删除,所以如果某些已经发布过版本的项目,还是用第一种方法比较好。
3、还有一个是,访问xxx/favicon.ico , 然后再访问网站,这个我用了无效,不过可以一试
4、还有删除缓存啥的,详见上面链接。
来自 https://blog.csdn.net/qq_17335549/article/details/116609346
我有一个使用自己的 tomcat 在本地运行的 Grails 应用程序,我刚刚将 favicon 更改为新的。问题是我在任何浏览器中都看不到它。旧的图标出现,或者我根本没有图标,但不是我的新图标。我认为这本身不是 Grails 问题,更多的是网站图标问题。
网站图标应该发生什么?他们应该如何工作?我的浏览器中有许多书签,它们的图标错误,而且它们似乎从未刷新过。如何强制服务器/浏览器停止缓存它们?总是缓存它们似乎很愚蠢,因为它们通常只有 16x16。为什么不在每次访问页面时上传它们?这并不是一个巨大的开销。
- 14接受和高度赞成的解决方案不是真正的解决方案。刷新不起作用的实际原因可以在这个问题的解决方案中找到:stackoverflow.com/questions/8616016 / ... ---图标缓存在sqlite DB文件中,独立于浏览器缓存!– 莫雷2015 年 1 月 17 日 15:16
- 10接受和高度赞成的解决方案是生产解决方案,或者我应该为用户编写教程如何在我们更新生产的 favicon 时清除他们的 favicon 缓存? 2015 年 11 月 12 日 9:43
- 2不是一个通用的解决方案。如果您在不接触代码的情况下使用 favicon 默认位置怎么办?也就是说,
favicon.ico
文档根目录中的一个文件。– 塞巴斯蒂安2016 年 10 月 13 日 2:49 - 9
- 如果有人想知道:Chromium 已决定不修复此问题,而是要求删除相关的历史条目和书签:bugs.chromium.org/p/chromium/issues/detail?id=440322– phpdev3 月 7 日 16:56
32 答案
要刷新站点的图标,您可以使用链接标签和文件名上的查询字符串强制浏览器下载新版本。
这在生产环境中特别有用,可确保您的用户获得更新。
<link rel="icon" href="http://www.yoursite.com/favicon.ico?v=2" />
- 38
- 10
- 6不幸的是,您需要 IE7 (&IE8?) 的完全限定绝对 URL - 请参阅jeffcode.blogspot.com.au/2007/12/...– 尤格2013 年 4 月 24 日 11:11
- 5同意上述评论,但这适用于所有当前浏览器:<link rel="shortcut icon" href="/favicon.ico?v=2" />– 戴夫·萨姆特2013 年 8 月 18 日 7:47
- 38
改编自lineofbird 的回答如下,您可以执行以下操作:
通过输入地址直接转到地址栏中的图标 url,例如
www.yoursite.com/favicon.ico
www.yoursite.com/apple-touch-icon.png
等等
按导航到 urlEnter
Ctrl用+刷新F5
重新启动浏览器(例如 Chrome、Firefox)
这个答案还没有给出,所以我想我会发布它。我浏览了整个网络,并没有找到在本地开发中测试网站图标的好答案。
在当前版本的 chrome(在 OSX 上)中,如果您执行以下操作,您将获得即时的 favicon 刷新:
将鼠标悬停在选项卡上
右键点击
选择重新加载
您的网站图标现在应该已刷新
这是我发现在本地刷新网站图标的最简单方法。
- 1不幸的是,这在 IE 甚至 Windows 上的 Chrome 中都不起作用,因此除非您仅在 OSX 上使用 Chrome,否则您似乎应该接受已接受的答案。– 克里斯托弗·金2015 年 1 月 14 日 17:43
- 3
- 1
- 1
- 5
通过销毁浏览器用来存储旧图标的文件,您可以强制加载新图标。
关闭浏览器。确保不再有浏览器进程在运行(例如,检查任务管理器中的
chrome.exe
或firefox.exe
)。导航到浏览器存储用户文件的位置:
对于 Chrome,请转到Chrome 数据目录。
对于 Firefox,转到Firefox 配置文件文件夹。
删除网站图标缓存。
对于 Chrome,删除
Favicons
并Favicons-journal
对于 Firefox,删除
favicons.sqlite
这几乎肯定会奏效。如果不:
可能性 1:浏览器的更新改变了网站图标缓存的工作方式。请使用新说明编辑此答案。
可能性 2:您的网站图标问题与过度缓存无关。相反,它可能是资源加载问题 - 使用开发者工具,确保新的网站图标正在正确下载。
- 2
- 2
- 4Chrome 中更简单的解决方案是右键单击并选择检查(或 CTRL+SHIFT+I),然后单击并按住刷新按钮。将出现一个菜单,其中包含刷新、硬重新加载或清空缓存和硬重新加载选项。通常 Hard Reload 会这样做,但如果由于某种原因顽固,Empty Cache 和 Hard Reload 肯定会。– 费尔维斯2017 年 11 月 1 日 16:12
- 1
重命名 favicon 文件并添加一个带有新名称的 html 标头,例如:
<link rel="SHORTCUT ICON" href="http://www.yoursite.com/favicon2.ico" />
- 4我假设浏览器可以查看网站图标名称是否相同。如果是,它不会再次请求下载,而是使用已经缓存的下载,但如果您更改名称,它将假定它已更改,从而从服务器请求它。– 博扬·科戈伊2011 年 8 月 19 日 3:49
- 3
如果你使用 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') ?>" />
- 2
- 45
- 1
- 15
- 9
在 Mac OS X 上的 Chrome 中,可以使用 favicon 缓存删除文件
${user.home}/Library/Application Support/Google/Chrome/Default/Favicons
- 1这个解决方案对我有用。出于某种原因,它并没有用上述方法以更多的票数刷新图标。所以谢谢你,Maxim Mazin。我只想摆脱一个我知道在我的新主机上不再存在的旧网站图标。– 沙利克2014 年 6 月 26 日 5:53
- 2这种方法在 Windows 上也适用于我,我从我的应用程序中删除了 favicon,但 chrome 仍然显示它。关闭 Chrome,删除“C:\Users\{user}\AppData\Local\Google\Chrome\User Data\Default\Favicons”,然后重新启动 Chome。旧的不受欢迎的网站图标不见了。– 斯科米萨2015 年 9 月 15 日 6:14
- 2我在“默认”下什么都没有,但最终我发现了这个变化:
${user.home}/Library/Application Support/Google/Chrome/Profile 1/Favicons
– 姆达尔曼2017 年 4 月 8 日 1:01 - @mdahlman 在尝试了所有其他方法之后,这最初对我不起作用。然而,我在 chrome 之后让这个工作
cmd+q
,进入菜单栏,再次强制退出 chrome 并等待 2 分钟打开浏览器并导航回我的网站。– 黄金时段2017 年 12 月 19 日 13:25
好吧,开销是开销,但是是的,不是太大。
此外,浏览器有时对缓存文件“贪婪”。您可以清除缓存和/或重新启动浏览器并可能会看到更改。如果那失败了……
我的廉价解决方案是:
从您的 webroot 中删除 favicon.ico。
在浏览器中再次访问http://example.com/favicon.ico,确认它丢失了。
将新的上传到您的 webroot。
在浏览器中再次访问http://example.com/favicon.ico,确认它是新的。
如果该序列不起作用,那么就会发生其他事情。
很可能是网络浏览器问题。您必须从浏览器中删除缓存,关闭浏览器并重新打开它。那应该解决它。
在您重新访问该页面并假设您之前已清除浏览器缓存之前,我认为您的收藏夹不会刷新您的收藏夹图标。
您的网络浏览器不会自行上网检查新的网站图标...谢天谢地。
- 4“您的网络浏览器不会自行上网检查新的网站图标......谢天谢地。” 为什么不?为什么不在每次页面加载时刷新它?这是一个2k的图像,这是花生。它永远不应该过时。整个缓存的想法在宏伟的计划中只是愚蠢的。– 西蒙2010 年 2 月 5 日 17:35
- 5developer.yahoo.com/performance/rules.html提到了您可能没有想到的与下载 favicon.ico 相关的问题。周围都有很好的提示。缓存是一种有价值的工具,可确保您的网站尽可能快地运行。缓存对于让您的浏览器感觉尽可能快也很有用。– 艺隆2010 年 2 月 5 日 17:57
- 7@Simon,缓存很傻?!?为了您的客户,我希望您自 2010 年以来已经了解了更好的 Web 开发的重要性。“愚蠢”的不是缓存并向您的服务器发出不必要的请求,因为这些请求相当于一个静态文件,如果有的话,很少会更改。– 埃德·德加涅2013 年 3 月 8 日 14:46
对于 macOS 上的 Chrome,如果您不想按照此处的建议删除整个 Chrome favicon 数据库,则可以仅删除冲突的图标:
退出 Chrome
加载 favicons 数据库(在此处使用 sqlite):
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
并按回车键退出 sqlite重启 Chrome
当您向 Google 请求网站图标时,您可以查看响应标头。
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 的 favicon 支持有问题 - 忽略这个答案
我写这个答案的印象是,这就是在谷歌浏览器中刷新网站图标所需要的。然而,事实证明这只在前五分钟左右有效,直到图标在 Chrome 的历史同步中不可挽回地丢失。
原始答案
您不必清除缓存、重新启动浏览器或重写 HTML - 您只需更改图标的 URL,一次,这样浏览器就会忘记以前缓存的图标。
假设您已经通过<link>
页面中的元素定义了您的图标<head>
,您可以通过在控制台中运行这个标准 JS 单线来做到这一点:
[].slice.call(document.querySelectorAll('head>link[rel$="icon"]')).map(function(ln){ln.href+='?v=2'});
有关可以在生产中为最终用户自动执行此操作的更高级实现,请参阅freshicon.js。
我最近恢复了我的书签,并正在寻找一种无需访问每个页面即可恢复 FavIcon 的方法。我的搜索把我带到了这个线程。
对于那些处于类似情况的人,只需下载 FAVICON RELOADER 插件即可。安装后,您将在书签下拉菜单中找到“重新加载收藏图标”命令。
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() ?>" />
它会在每次页面加载时刷新您的网站图标。
- 2
- 如果您想缓存您的新网站图标.. 只需提供任何新值,例如.. <link rel="shortcut icon" href=" yoursite.com/favicon.ico?v=12345 ">– 沙基尔·艾哈迈德2014 年 7 月 18 日 16:38
- 2favicon.ico?v=<?php echo md5_file('favicon.ico') 正如 Felix Wienberg @machineaddict 所建议的那样 2014 年 12 月 27 日 22:36
- 2
如果您只是对调试它感兴趣以确保它已更改,您可以在 /etc/hosts 文件中添加一个虚拟条目并点击新 URL。该图标不会被缓存,您可以确保您的新图标正在工作。
如果不更改网站图标的名称,则无法强制用户获取新副本
我知道这是一个非常古老的问题,但它也是一个仍然相关的问题,尽管这些天只适用于 Mozilla。(我不知道资源管理器做了什么,因为我们不为非标准浏览器编写代码)。
如果在标题中包含一个图标标签,Chrome 就会表现良好。
尽管 Mozilla 很清楚这个问题,但像往常一样,他们从不解决烦人的小问题。即使是 6 年后。
因此,有两种方法可以强制使用 Firefox 刷新图标。
让所有客户卸载 Firefox。然后重新安装。
在 url 栏中手动仅键入域 - 不要仅使用域 (mydomain.com) 使用 http 或 www。
这当然假设您的 ns 记录仅包括域名解析。
简单的,
1:我不想摆弄代码(ps我的网站构建器不使用代码,它使用“上传文件”按钮,它自己做)
2:我尝试了CTRL+F5但它对我不起作用,所以......
我有一个解决方案:
IE:通过转到设置 cog O 清除所有浏览器历史记录和 cookie
Chrome:转到看起来像 = 的 X 下方右上角的菜单,然后转到设置、历史记录、清除浏览数据并选中所有适用的框(我做了历史记录、cookie 并从时间的开始)
以下是我使用简单的动画图标和 FireFox 3.6.13(测试版)管理它的方法。它可能也适用于其他版本的 FireFox,如果不能,请告诉我。它基本上是 artlung 的解决方案,但也解决了 .gif 文件:
我通过 FTP 程序打开,下载了我的 favicon.ico 和 favicon.gif 文件,
然后从我的服务器文件中删除它们。
然后我按照 artlung 的建议在浏览器中打开它们: http://mysite.com/favicon.ico和http://mysite.com/favicon.gif一旦这些地址加载并显示 404 错误页面(“找不到页面”)
然后我将两个文件上传回我的服务器,然后 PRESTO - 立即显示正确的图标。
还要确保放置完整的图像 URL,而不仅仅是其相对路径:
http://www.example.com/images/favicon.ico
并不是:
images/favicon.ico
- 3
/images/favicon.ico
是正确的方法:它“只适用于”不同的环境(开发/测试/生产),并且是绝对路径 - 来自文档基本 URL。– ANeves2012 年 4 月 24 日 10:37 - 3
在文件路径的末尾使用查询字符串。每次构建的查询字符串变量值必须不同。
如果以前的构建是:
<link rel="icon" href="http://example.com/favicon.ico?v=v1" />
或者
<link rel="icon" href="http://example.com/favicon.ico?v=stringA" />
那么下一个构建应该是:
<link rel="icon" href="http://example.com/favicon.ico?v=v2" />
或者
<link rel="icon" href="http://example.com/favicon.ico?v=stringB" />
西蒙,我想到目前为止没有其他答案被接受是有原因的。因此,我相信这可能是一个 Grails 问题 - 特别是如果您使用的是“资源插件”。
如果您的插件提供了一个网站图标(这 - 不合逻辑 - 许多人都这样做),它们可能会覆盖您想要使用的图标 - 因为您的插件本身就在插件中。
如果从所有插件中临时删除图标可以解决问题,那么您很可能会遇到这种情况:
不是您要找的答案?浏览标记的其他问题网站图标 或者问你自己的问题。
来自 https://stackoverflow.com/questions/2208933/how-do-i-force-a-favicon-refresh