如何强制网站图标刷新?

我有一个 Grails 应用程序,它使用自己的 tomcat 在本地运行,而我刚刚将图标图标更改为一个新图标。问题是我无法在任何浏览器中看到它。出现旧的收藏夹图标,或者我什么都没有得到,但是我的新收藏夹没有。我认为这本身不是 Grails 的问题,更多的是网站图标的问题。

网站图标应该发生什么?他们应该如何工作?我的浏览器中有很多书签,这些书签的图标错误,它们似乎从未刷新过。如何强制服务器 / 浏览器停止缓存它们?鉴于通常只有 16x16,总是缓存它们似乎很愚蠢。为什么不随页面访问一起上传它们呢?这并不是一个巨大的开销。

答案

要刷新您网站的收藏夹图标,您可以强制浏览器使用链接标签和文件名上的查询字符串下载新版本。这在生产环境中特别有用,可确保您的用户获得更新。

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

好吧,经过 10 分钟的 wtf'ing 处理后,修复它的简单方法与 lineofbirds 接近

  1. 输入 www.yoursite.com/favicon.ico(或 www.yoursite.com/apple-touch-icon.png 等)
  2. 按下Enter
  3. Ctrl + F5
  4. 重新启动浏览器(IE,Firefox)

这个答案还没有给出,所以我认为应该发表。我在网上浏览了所有内容,但没有找到在本地开发中测试网站图标的好答案。

在当前版本的 chrome(在 OSX 上)中,如果执行以下操作,则会立即刷新网站图标:

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

这是我发现的在本地刷新图标的最简单方法。

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

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

  1. 关闭浏览器。确保不再运行浏览器进程(例如,在任务管理器中检查chrome.exefirefox.exe )。
  2. 导航到浏览器存储用户文件的位置:
  3. 删除收藏夹缓存。
    • 对于 Chrome,删除FaviconsFavicons-journal
    • 对于 Firefox,删除favicons.sqlite

这几乎肯定会起作用。如果不:

  • 可能性 1:浏览器的更新已更改了网站图标缓存的工作方式。请使用新的说明编辑此答案。
  • 可能性 2:您的网站图标问题与过度激进的缓存无关。相反,它可能是资源加载问题–使用开发人员工具,确保正确下载了新的图标。

在 Mac OS X 上的 Chrome 中,可以使用网站图标缓存删除文件

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

好吧,开销就是开销,但是是的,不要太大。

同样,浏览器有时对缓存的文件 “贪婪”。您可以清除缓存和 / 或重新启动浏览器,然后可能会看到更改。如果失败了...

我的 cheapo 解决方案是:

  1. 在浏览器中通过http://example.com/favicon.ico访问您的文件。
  2. 从您的 webroot 删除 favicon.ico。
  3. 在浏览器中再次访问http://example.com/favicon.ico ,确认其丢失。
  4. 将新的上传到您的 webroot。
  5. 在浏览器中再次访问http://example.com/favicon.ico ,确认它是新的。

如果该顺序不起作用,则说明正在进行其他操作。

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

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