如何清除IE的favicon缓存?

Ian*_*oyd 30 favicon internet-explorer caching

我有一个为我的网站定义的最喜欢的图标:

<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
Run Code Online (Sandbox Code Playgroud)

添加图标后访问该网站的任何浏览器都可以显示图标.但我自己的浏览器拒绝显示图标.

我已经尝试了我能想到的链接的每个变体:

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

<link rel="shortcut icon" type="image/x-icon" href="http://example.com/favicon.ico">

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

<link rel="icon" type="image/x-icon" href="http://example.com/favicon.ico">

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

<link rel="shortcut icon" type="image/x-icon" href="http://example.com/favicon.ico">
<link rel="icon" type="image/x-icon" href="http://example.com/favicon.ico">

<link rel="shortcut icon" type="image/x-icon" href="renamed.ico">
Run Code Online (Sandbox Code Playgroud)

无关紧要,Internet Explorer(9)甚至拒绝尝试从服务器进行提取(从fiddler监控).

我多次尝试清除缓存:

(gear) -> Internet Options -> General -> Delete -> Temporary Internet Files
Run Code Online (Sandbox Code Playgroud)

Alex在这个答案中认为,喜爱的图标的缓存方式与常规网页内容不同,并且不遵循常规清算规则.

所以问题就变成了:我如何清除Internet Explorer最喜欢的图标缓存?

也可以看看

i_a*_*orf 37

它在历史记录中存储或不存在图标.如果要重置它,请清除历史记录. 这是一个全面的FAQ.


编辑:引用博客,称之为广泛的答案:

为什么我的网站的favicon不出现在IE7中?

这是最近发布于2007-03-01的帖子的重新发布.原文可以在这里找到 .此版本已更新,以匹配当前的现实.

当我在微软时,我是负责修复IE7的Favicon故事的开发人员.最初的IE6行为是下载favicon一次 - 当用户将网站设为收藏夹时.我不想深入了解这种疯狂如何运作的细节,但理解为什么它看起来如此破碎的关键信息是:网站的网址之间的映射网站的Favicon网址将被存储在IE的历史数据库中,图标的实际位将存储在临时Internet文件夹中.因此,如果您清除了历史记录或缓存,或者项目已从任何一个中过期,则图标将永远消失.

快进到IE7.自IE6发布以来已经超过两年(三年).我们希望实现选项卡式浏览,我们希望选项卡显示正确的Favicons.所以我更新了Favicon代码,以便在第一次访问时始终下载图标.该代码还会记住是否没有Favicon(404)或者它在某种程度上无效(ExtractIcon()失败).

这是我在微软时写的Mini-Faq(最后有一个红利问题):

问:如何在IE7中为我的网站显示favicon?
答:有两种方法.第一种是将文件放在域名的根目录中favicon.ico.第二种方法是使用一个<link>标签,其 rel="shortcut icon"值和href值设置为您要显示的Icon的URL.

问: IE下载热门图标的频率是多少?
答: IE会在用户首次访问该网站时下载该图标.该图标存储在客户端计算机上的Temporary Internet Files文件夹中.有关favicon的其他元数据存储在用户的Url History数据库中.如果任一商店被清除,或者与favicon相关的项目自然过期,则下次访问时将再次下载该图标.如果多个页面(或站点)共享同一个图标,则只下载一次.IE尽可能少地下载图标以减少服务器上的负载.

问:我在访问的某些网站上看到了错误的图标.我该如何解决?
答:如果历史数据库以某种方式损坏,可能会发生这种情况.最简单的解决方案是使用"删除浏览历史记录"(在"工具"菜单上)清除缓存和历史记录存储.

问:我按照你的描述在我的网站上放了一个favicon.ico,但它仍然没有出现.
答:它实际上必须是.ico(图标)文件.位图,png,GIF等不起作用.IE7会将您的favicon下载到Temporary Internet Files文件夹并调用ExtractIcon()该文件.如果失败,我们将显示默认图标而不是您的图标.

问:我确认我的favicon确实是一个图标,但它仍然没有出现.
答:由于IE将您的图标从Temporary Internet Files文件夹中加载,因此它必须能够将其实际存储在那里.如果要为图标文件设置no-cache指令,则IE将无法显示您的图标,而是显示默认图标.您可以使用Fiddler进行验证.

问:如何为我网站上的每个页面创建不同的图标?
答:在每个页面上放置一个不同的标签,指向不同的图标.

问:我将我网站的图标更改为其他图标,但旧图标仍显示在IE中.如何强制IE更新?
答:如果您只是将favicon.ico文件放在域的根目录中,IE就无法知道它是否发生了变化.要强制进行更新,您需要使用标记并指向与以前使用的文件名不同的文件名.将当前文件名与存储在Url History数据库中的已知文件名进行比较.当IE看到文件名已更改时,它将下载您的新图标.或者,您可以要求您的用户清除其历史记录和缓存(工具 - > Internet选项 - >删除浏览历史记录),这也将强制IE下载新文件.

问:还有什么问题?
答:两件事:

  1. 如果通过标记指定备用位置,则href成员必须是完全限定的,并且不尊重标记.
  2. 标记必须具有"快捷图标"作为rel值,但这违反了W3C规范,该规范指出rel标记中的空格表示值列表.IE将"快捷图标"视为单个值.幸运的是,这仍然适用于其他浏览器,他们看到"快捷方式"并忽略它,只关注"icon"字符串.

这应该涵盖我收到的关于IE7中的favicons的大部分问题.如果您有更多问题,请随时提出.


Pek*_*ica 15

您可以尝试使用撬棍来规避任何缓存策略:添加随机GET参数.

 favicon.ico?def=abcdefghijklmn
Run Code Online (Sandbox Code Playgroud)

它很hacky,但它通常适用于适当的缓存标头等.