代码之家  ›  专栏  ›  技术社区  ›  Simon

如何强制favicon刷新?

  •  1452
  • Simon  · 技术社区  · 16 年前

    我有一个Grails应用程序使用自己的tomcat在本地运行,我刚刚将favicon更改为一个新的。问题是我在任何浏览器中都看不到它。旧的favicon出现了,或者我根本没有favicon,但我的新favicon没有。我不认为这是Grails本身的问题,而是favicons的问题。

    favicons会发生什么?他们应该如何工作?我的浏览器中有很多书签的图标不正确,而且它们似乎从未刷新过。如何强制服务器/浏览器停止缓存它们?考虑到它们通常只有16x16,总是缓存它们似乎很愚蠢。为什么不在每次访问页面时上传它们呢?这并不是一个巨大的开销。

    31 回复  |  直到 7 年前
        1
  •  2150
  •   Michał Perłakowski    10 年前

    要刷新站点的favicon,可以使用链接标记和文件名上的查询字符串强制浏览器下载新版本。这在生产环境中尤其有助于确保用户获得更新。

    <link rel="icon" href="http://www.yoursite.com/favicon.ico?v=2" />
    
        2
  •  839
  •   sonali    6 年前

    好的,经过10分钟的尝试,修复它的简单方法接近于鸟线

    1. 输入www.yoursite.com/favicon.ico(或www.yoursite.com/apple-touch-icon.png等)
    2. 进入
    3. 控制键 + f5
        3
  •  263
  •   Garry Polley    11 年前

    这个答案还没有给出,所以我想我应该把它贴出来。我环顾了整个网络,没有找到一个在本地开发中测试Favicon的好答案。

    1. 将鼠标悬停在选项卡上
    2. 右击
    3. 选择“重新加载”
    4. 您的favicon现在应该刷新了

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

        4
  •  59
  •   Klaus Byskov Pedersen    16 年前

    重命名favicon文件并使用新名称添加html头,例如:

    <link rel="SHORTCUT ICON" href="http://www.yoursite.com/favicon2.ico" />
    
        5
  •  56
  •   Felix Wienberg    10 年前

    如果使用PHP,还可以使用favicon的MD5哈希作为查询字符串:

    <link rel="shortcut icon" href="favicon.ico?v=<?php echo md5_file('favicon.ico') ?>" />
    

    这样,Favicon在更改时将始终刷新。

    正如评论中所指出的,您还可以使用上次修改的日期而不是MD5哈希来实现相同的效果,并节省一点服务器性能:

    <link rel="shortcut icon" href="favicon.ico?v=<?php echo filemtime('favicon.ico') ?>" />
    
        6
  •  54
  •   MultiplyByZer0 Joke_Sense10    7 年前

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

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

    这几乎肯定会奏效。如果没有:

    • 可能性1:对浏览器的更新改变了favicon缓存的工作方式。请用新的说明编辑此答案。
    • 可能性2:favicon问题与过度压缩的缓存无关。相反,使用开发人员工具可能会出现资源加载问题,请确保新favicon正在正确下载。
        7
  •  33
  •   Maxim Mazin    12 年前

    ${user.home}/Library/Application Support/Google/Chrome/Default/Favicons 
    
        8
  •  17
  •   artlung    16 年前

    嗯,开销就是开销,但是是的,不是太大。

    此外,浏览器有时对缓存文件“贪婪”。您可以清除缓存和/或重新启动浏览器,并可能看到更改。如果失败了。。。

    我的cheapo解决方案是:

    1. http://example.com/favicon.ico 在浏览器中。
    2. 参观 http://example.com/favicon.ico 再次在浏览器中,验证它是否丢失。
    3. 将新文件上载到webroot。
    4. 参观 http://example.com/favicon.ico 再次在浏览器中,验证它是新的。

    如果这个序列不起作用,那么就会发生其他事情。

        9
  •  17
  •   Anonymous    5 年前

    控制键 + (或 命令 + 在macOS上),通常会使其更新。

        10
  •  16
  •   Mwiza Nagarjuna Durgam    8 年前

    在MAC上: 移位 - 或者压制 然后单击浏览器中的“重新加载”按钮。

        11
  •  10
  •   nickhar    13 年前

    对于Internet Explorer,还有另一种解决方案:

    1. 单击菜单>工具>互联网选项。
    2. 单击常规>临时internet文件>“设置”按钮。
    3. 单击“查看文件”按钮。
    4. 找到旧的favicon.ico文件并将其删除。
    5. 重新启动浏览器(internet explorer)。
        12
  •  9
  •   Nathan Hughes    11 年前

    我不相信你的favicon会在你的收藏夹上刷新,除非你重新访问该页面,并且假设你之前已经清除了浏览器缓存。

        13
  •  8
  •   Old McStopher    13 年前

    尝试在新选项卡中打开

    我尝试了上面的许多方法(重置缓存、刷新、使用链接标签等),我甚至检查了我的 .htaccess

    1. <link>
    2. 导航到 mysite.com/favicon.ico
    3. mysite.com 在新选项卡中

    (直到第3步,在同一选项卡中刷新时,仍会复制旧图标。)

        14
  •  8
  •   MrUpsidown    9 年前

    1. 退出Chrome
    2. 加载favicons数据库(此处使用sqlite):

    sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/Favicons

    1. 搜索导致问题的文件

    select * from favicons where url = 'http://mysite.dev/favicon.ico';

    delete from favicons where url = 'http://mysite.dev/favicon.ico';


    ,您可以搜索可重复使用以删除多个条目的模式:


    1. 寻找 多个文件 这些都在引发问题

    select * from favicons where url like 'http://mysite.dev%';

    1. 同样,如果您对这一回报感到满意:

    delete from favicons where url like 'http://mysite.dev%';


    1. .exit 然后点击return退出sqlite
    2. 重新启动Chrome
        15
  •  7
  •   Dean J    16 年前

    当您从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
    

        16
  •  7
  •   Stuart P. Bentley    10 年前

    Chrome对favicon的支持有缺陷——忽略这个答案

    我写这个答案的印象是,这就是谷歌Chrome中更新favicons所需要的。然而,事实证明,这只适用于前五分钟左右,直到图标消失 irretrievably lost in Chrome's history synchronization .

    您不必清除缓存,重新启动浏览器, 一旦

    假设您已通过 <link> 页面中的 <head> ,您可以通过运行此 标准JS一衬板 在控制台中:

    [].slice.call(document.querySelectorAll('head>link[rel$="icon"]')).map(function(ln){ln.href+='?v=2'});
    

    有关可在生产中为最终用户自动执行此操作的更高级实现,请参阅 freshicon.js .

        17
  •  7
  •   Pascal    7 年前

    Chrome版本:68.0.3440.106

    只需重新启动Chrome(在地址栏中): chrome://restart

        18
  •  4
  •   John Conde    14 年前

    我最近恢复了我的书签,并正在寻找一种方法来恢复FavIcons,而不必访问每个页面。我的搜寻使我找到了这条线索。

    对于处于类似情况的用户,只需下载FAVICON重新加载插件即可。安装后,您将在书签下拉菜单中找到“重新加载收藏夹图标”命令。

    https://addons.mozilla.org/en-US/firefox/addon/faviconreloader/?src=api

        19
  •  4
  •   Shakeel Ahmed    12 年前

    <link rel="shortcut icon" href="http://www.yoursite.com/favicon.ico?v=<?php echo time() ?>" />
    

        20
  •  3
  •   cpjolicoeur    15 年前

    如果您只是想调试它以确保它已更改,那么只需在/etc/hosts文件中添加一个虚拟条目并点击新的URL即可。该favicon不会被缓存,您可以确保新的favicon正常工作。

    除了更改favicon的名称,您无法强制用户获取新副本

        21
  •  2
  •   user1427015    13 年前

    这是chrome bug的一个解决方法:将rel属性更改为stylesheet!保留原始链接。工作起来很有魅力:

        22
  •  2
  •   Nikolai Koudelia    7 年前

    这适用于Chrome:

    • 在Mac上:删除文件

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

    • 在Windows上:删除文件

      C:\Users[username]\AppData\Local\Google\Chrome\User Data\Default\Favicons日志

    source

        23
  •  1
  •   rockmo    9 年前

    我知道这是一个非常古老的问题,但它也是一个仍然相关的问题,尽管现在只适用于mozilla(我不知道浏览器做什么,因为我们不为非标准浏览器编码)。

    1. 让所有客户端卸载firefox。然后重新安装。

    2. 在url栏中手动键入域-不要使用http或www

    当然,这假设您的ns记录只包含域名解析。

        24
  •  1
  •   Mwiza Nagarjuna Durgam    8 年前

    简单,,

    1:我不想乱动代码(ps我的网站建设者不使用代码,它使用“上传文件”按钮,它自己做)

    这对我不起作用所以。。。。

    我有一个解决办法:

    IE:通过转到设置cog O清除所有浏览器历史记录和cookie

        25
  •  1
  •   Armin Alibasic    7 年前

    只需更改此文件名='favicon1.ico'

        26
  •  0
  •   lineofbirds    15 年前

    1. 我通过FTP程序打开,下载了favicon.ico和favicon.gif文件,
    2. 然后我在我的浏览器中按artlung的建议打开了它们: http://mysite.com/favicon.ico http://mysite.com/favicon.gif 一旦这些地址加载并显示404错误页面(“未找到页面”)
        27
  •  0
  •   ssc-hrep3    9 年前

    另外,请确保您将完整图像URL而不仅仅是其相对路径:

    http://www.example.com/images/favicon.ico
    

    而不是:

    images/favicon.ico
    
        28
  •  0
  •   Murat Yıldız    8 年前

    如果尽管应用了上述步骤,问题仍然存在 . 希望这有助于。。。

        29
  •  -3
  •   user569825    14 年前

    西蒙,我想其他答案到目前为止都不被接受是有原因的。所以我相信这一点 能够

    如果你的插件提供了一个favicon(这是不合逻辑的,很多插件都提供了),那么它们可能会覆盖你想要使用的favicon,因为你的插件本身就是一个favicon。

    如果从所有插件中删除favicon临时解决了问题,那么您很可能会遇到以下情况:

    http://jira.grails.org/browse/GPRESOURCES-134

        30
  •  -3
  •   Rut Shah    7 年前

    1. 转到angular.json,并在该“projects”->建筑师“->”构建“->”选项“->”“资源”,并在此处为图标文件创建一个条目。请参阅favicon.ico的现有条目以了解如何操作。
    2. 转到index.html并更新图标文件的路径。例如

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

    或者,将图标文件重命名为favicon.ico,并将其替换到目录中。

    1. 重新启动服务器。
    2. 硬刷新浏览器,您就可以开始了。