我如何强制一个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分钟后,修复它的简单方法就是接近线鸟
- inputwww.yoursite.com/favicon.ico(或www.yoursite.com/apple-touch-icon.png等)
- 按回车
- 按Ctrl + F5
- 重新启动浏览器(IE,Firefox)
这个答案还没有给出,所以我想我会张贴它。 我查看了networking上的所有内容,在本地开发中没有findtesting网站图标的好方法。
在当前版本的Chrome(在OSX上),如果您执行以下操作,您将获得即时的favicon更新:
- 将鼠标hover在标签上
- 右键点击
- select重新加载
- 现在应该刷新你的图标了
这是我发现在本地刷新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是:
- 访问http://example.com/favicon.ico在您的浏览器中的文件。;
- 从您的webroot中删除favicon.ico。
- 在浏览器中再次访问http://example.com/favicon.ico ,validation是否丢失。
- 上传一个新的到你的webroot。
- 再次访问http://example.com/favicon.ico在浏览器中,validation它是新的。;
如果这个顺序不起作用,那么其他的事情正在发生。
对于Internet Explorer,还有另一个解决scheme:
- 打开Internet Explorer。
- 点击菜单>工具>互联网选项。
- 点击一般>临时互联网文件>“设置”button。
- 点击“查看文件”button。
- find您的旧favicon.ico文件并将其删除。
- 重新启动浏览器(Internet Explorer)。
更可能是一个networking浏览器的问题。 您将不得不从浏览器中删除caching,closures浏览器并重新打开。 这应该解决它。
我不相信你的collections夹图标会刷新你的collections夹,直到你重新访问该页面,并假设你已经清除了浏览器caching。
您的networking浏览器不会去互联网自己检查一个新的图标…谢天谢地。
根据不同的浏览器,他们的处理方式不同,但通常我会发现转到网站的默认页面,并进行硬刷新。 CTRL + F5,通常会让它更新。
尝试在新标签中打开
我尝试了许多以上的东西(重置caching,刷新,使用链接标签等),我甚至检查了我的.htaccess
文件并重置了ExpiresByTypevariables。
但是这终于在Chrome(25.0.x)和Safari(6.0.1)中为我工作了:
- 刷新caching
- 将favicon与
<link>
标记硬连接 - 浏览至
mysite.com/favicon.ico
- 在新选项卡中打开
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图标数据库,则只能删除冲突的图标:
- 退出Chrome
- 加载favicons数据库(在这里使用sqlite):
sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/Favicons
- search导致问题的文件
select * from favicons where url = 'http://mysite.dev/favicon.ico';
- 如果你对输出满意:
delete from favicons where url = 'http://mysite.dev/favicon.ico';
或者 ,您可以search可以重复使用以删除多个条目的模式:
- search导致问题的多个文件
select * from favicons where url like 'http://mysite.dev%';
- 如果你对这个回报感到满意,
delete from favicons where url like 'http://mysite.dev%';
- 键入
.exit
并点击返回来退出sqlite - 重新启动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进行图标刷新。
-
让所有的客户端卸载Firefox。 然后重新安装。
-
手动inputurl栏中的域名 – 不要使用http或www只是域名(mydomain.com)。
这当然假设你的nslogging只包含域名parsing。
下面是我用一个简单的animation图标和FireFox 3.6.13(testing版)来pipe理它。它也可能适用于其他版本的FireFox,让我知道如果它不。 这基本上就是artlung的解决scheme,但是也可以使用.gif文件:
- 我通过FTP程序打开,下载了我的favicon.ico和favicon.gif文件,
- 然后从我的服务器的文件中删除它们。
- 然后,我打开他们在我的浏览器,如artlungbuild议: http ://mysite.com/favicon.ico和http://mysite.com/favicon.gif一旦这些地址加载和显示404错误页面(“页面找不到”);
- 我然后上传两个文件到我的服务器,PRESTO – 正确的图标即时显示。
如果问题仍然存在,请尝试重新启动IIS服务器 。 希望这可以帮助…
西蒙,我想有一个原因,到目前为止还没有其他的答案被接受。 因此,我相信这可能是一个Grails问题 – 尤其是如果您使用“资源插件”。
如果你的插件提供了一个图标(这在许多情况下是不合逻辑的),它们可能会覆盖你想要使用的图标 – 因为你的插件本身就是插件。
如果从所有插件中删除图标暂时解决了这个问题,那么你很可能遇到这种情况:
简单,
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的许可,并且它工作了,当然在你确定它存在的问题之后,确保将权限更改为更安全的值。