题
我有一个使用自己的tomcat在本地运行的Grails应用程序,我刚刚更改了一个新的Favicon。问题是我在任何浏览器中都看不到它。旧的Favicon出现了,或者我根本没有Favicon,但没有我的新产品。我认为这本身不是圣杯,而不是Favicons的问题。
Favicons应该发生什么?他们应该如何工作?我的浏览器中有许多书签,这些书签有错误的图标,并且似乎从未得到刷新。如何强制服务器/浏览器停止缓存它们?考虑到它们通常只有16x16,总是缓存它们似乎很愚蠢。为什么不只是每次访问页面上传它们呢?这并不是一个巨大的开销。
解决方案
为了刷新您的网站的Favicon,您可以强迫浏览器使用链接标签和文件名上的Querystring下载新版本。这在生产环境中特别有用,以确保您的用户获得更新。
<link rel="icon" href="http://www.yoursite.com/favicon.ico?v=2" />
其他提示
好的,经过10分钟的WTF',修复它的简便方法与Lineofbird的近距离
- 输入www.yoursite.com/favicon.ico(或www.yoursite.com/apple-touch-icon.png等)
- 推 进入
- Ctrl+F5
- 重新启动浏览器(即Firefox)
这个答案尚未给出,所以我想我会发布它。我在网络上浏览了整个网络,并没有找到在本地开发中测试Favicons的好答案。
在当前版本的Chrome(OSX上)中,如果您执行以下操作,您将获得即时的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') ?>" />
通过销毁浏览器用于存储旧粉丝的文件,您可以强迫加载新的文件。
- 关闭您的浏览器。确保不再有浏览器流程运行(例如,检查任务管理器
chrome.exe
或者firefox.exe
). - 导航到浏览器存储用户文件的位置:
- 对于Chrome,去 铬数据目录.
- 对于Firefox,去 Firefox配置文件夹.
- 删除Favicon缓存。
- 对于Chrome,删除
Favicons
和Favicons-journal
- 对于Firefox,请删除
favicons.sqlite
- 对于Chrome,删除
这几乎肯定会起作用。如果不:
- 可能性1:浏览器的更新改变了Favicon缓存的工作方式。请用新的说明编辑此答案。
- 可能性2:您的最爱问题与过度侵略性缓存无关。相反,它可能是一个资源加载问题 - 使用开发人员工具,请确保新的Favicon正在正确下载。
在Mac OS X上的Chrome中,一个可以使用Favicon Cache删除文件
${user.home}/Library/Application Support/Google/Chrome/Default/Favicons
好吧,开销是头顶的,但是是的,不太大。
此外,浏览器有时是关于缓存文件的“贪婪”。您可以清除缓存和/或重新启动浏览器,并可能会看到更改。如果那失败了...
我的便宜解决方案是:
- 访问您的文件 http://example.com/favicon.ico 在您的浏览器中。
- 从您的webroot中删除favicon.ico。
- 访问 http://example.com/favicon.ico 再次在浏览器中,验证它缺失。
- 将新的网站上传到您的Webroot。
- 访问 http://example.com/favicon.ico 再次在浏览器中,验证它是新的。
如果该序列不起作用,那么还有其他事情正在发生。
根据浏览器的处理方式,它们的处理方式有所不同,但通常我会发现进入网站的默认页面并进行硬刷新。 Ctrl + F5, ,通常会让它进行更新。
在Mac上:⌘ + 转移-r 或压低 Ctrl 然后单击浏览器中的重新加载按钮。
对于Internet Explorer,还有另一个解决方案:
- 打开Internet Explorer。
- 单击菜单>工具> Internet选项。
- 单击常规>临时Internet文件>“设置”按钮。
- 单击“查看文件”按钮。
- 查找您的旧favicon.ico文件并删除它。
- 重新启动浏览器(Internet Explorer)。
很可能是Web浏览器问题。您必须从浏览器中删除缓存,关闭浏览器并重新打开它。应该解决它。
我不相信您的粉丝会在您重新访问该页面之前会刷新您的收藏夹,并假设您以前清除了浏览器缓存。
您的Web浏览器不会出去互联网以自己检查新的Favicon ...谢天谢地。
尝试在新标签中打开
我尝试了上面的许多事情(重置缓存,刷新,使用链接标签等),我什至检查了我的 .htaccess
文件并重置ExpiresbyType变量。
但这在Chrome(25.0.x)和Safari(6.0.1)中最终对我有用:
- 冲洗缓存
- 用力链接粉丝
<link>
标签 - 导航到
mysite.com/favicon.ico
- 开场
mysite.com
在新标签中
(直到步骤3,在同一选项卡中刷新的刷新不断重现旧图标。)
对于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 - 重启铬
当您从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
如果您在响应中放置“到期:”标题,则客户浏览器将在时间戳之后重新要求图标。在进行积极发展的同时,您可以将到期的时间戳设置为一两秒钟,并始终将其设置为一个,尽管这是一个糟糕的长期计划。
Chrome的Favicon支持是错误的 - 无视此答案
我写了这个答案的印象是,这就是在Google Chrome中刷新Favicons所需要的。但是,事实证明,这仅在头五分钟左右才能工作,直到图标获取 在Chrome的历史同步中失去了不可挽回的失落.
原始答案
您不必清除缓存,重新启动浏览器, 或者 重写您的html-您只需要更改图标的URL即可, 一次, ,以便浏览器会忘记以前流连忘返的图标。
假设您已经通过 <link>
页面中的元素 <head>
, ,您可以通过运行 标准JS一线 在控制台中:
[].slice.call(document.querySelectorAll('head>link[rel$="icon"]')).map(function(ln){ln.href+='?v=2'});
有关此类更高级的实施,可以自动为生产中的最终用户执行此操作,请参见 刚刚刚好.
我最近还恢复了书签,并正在寻找一种在不访问每个页面的情况下恢复最爱的方法。我的搜索使我进入了这个线程。
对于那些在类似情况下的人,仅下载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() ?>" />
它将在每个页面上刷新您的粉丝。
Chrome版本:68.0.3440.106
只需重新启动Chrome(在您的地址栏中):chrome://restart
如果您只是有兴趣调试它以确保它已更改,则可以在您的 /etc /hosts文件中添加虚拟条目并击中新的URL。那个Favicon已经无法缓存,您可以确保您的新产品正在工作。
除了更改Favicon的名称之外,您无法强迫用户获得新副本
这适用于Chrome:
在Mac上:删除文件
美元
在Windows:删除文件
c: users [用户名] appdata local google chrome chrome user daget default favicons c: users [username] appdata local local google chrome chrome chrome user def default favicons-journal-journalnalnalnalnal
这是Chrome Bug的解决方法:将REL属性更改为样式表!保持原始链接。奇迹般有效:
我想出了这个解决方法,因为我们还需要能够更新客户的网站 /生产代码,而且我没有找到其他工作解决方案。
我知道这是一个非常古老的问题,但这也是仍然相关的问题,尽管这些天仅适用于Mozilla。 (我不知道Explorer会做什么,因为我们不为非标准浏览器编码)。
如果一个人在标题中包含图标标签,则镀铬表现良好。
尽管Mozilla很清楚这个问题,但是像往常一样,它们从未解决过烦人的小东西。甚至在6年后。
因此,有两种方法可以强迫使用Firefox刷新图标。
让所有客户卸载Firefox。然后重新安装。
手动仅在URL栏中键入域 - 请勿仅使用HTTP或www仅域(mydomain.com)。
当然,这假设您的NS记录仅包含域名的分辨率。
这是我使用简单动画的Favicon和Firefox 3.6.13(beta版本)对其进行管理的方式,它也可能适用于其他版本的Firefox,让我知道是否不这样做。这基本上是Artlung的解决方案,但也解决了.gif文件:
- 我由FTP程序打开,下载了我的favicon.ico和favicon.gif文件,
- 然后将它们从我的服务器文件中删除。
- 然后,我按照Artlung的建议在浏览器中打开它们:http://mysite.com/favicon.ico 和 http://mysite.com/favicon.gif 一旦这些地址加载并显示了404个错误页面(“未找到页面”)
- 然后,我将两个文件上传回我的服务器,然后将PRESTO上传到Presto-立即显示正确的图标。
另外,请确保将完整的图像URL不仅仅是其相对路径:
http://www.example.com/images/favicon.ico
并不是:
images/favicon.ico
如果问题仍在继续 尝试重新启动IIS服务器. 。希望这可以帮助...
简单的,
1:我不想摆弄代码(PS我的网站构建器不使用代码,它使用“上传文件”按钮,并且它本身可以使用)
2:我尝试了 Ctrl+F5 而且对我不起作用。
我有一个解决方案:
即:通过进入设置COG O清除所有浏览器历史记录和cookie
Chrome:转到X下方右上角的菜单,看起来像A =,然后转到设置,历史记录,清除浏览数据并检查所有适用的框开始时间)
只需更改此文件名='favicon1.ico'
请按照以下步骤更改应用程序图标:
- 在项目中添加您的.ICO文件。
- 转到Angular.json,然后在“项目” - >“ Architect” - >“构建” - >“选项” - >“ Assets”中,然后在这里为您的图标文件进行条目。请参阅favicon.ico的现有条目以了解如何做。
- 转到index.html并更新图标文件的路径。例如,
<link rel="icon" type="image/x-icon" href="abc.ico">
或者,使用favicon.ico重命名您的图标文件,然后将其替换为目录。
- 重新启动服务器。
- 硬刷新浏览器,您很高兴。
西蒙,我想到目前为止,没有其他答案被接受。所以我相信这个 可以 尽管如此,还是您使用“资源插件”的情况下,要成为圣杯问题。
如果您的插件提供了一个Favicon(这是不合规的 - 很多),则它们可能会覆盖您想要使用的插件 - 鉴于您的插件本身就是在插件中。
如果从所有插件中删除Favicon临时解决问题,那么您很可能会遇到这一点: