【整理】favicon.ico 相关内容整理

简介:
      所谓 favicon,即 Favorites Icon 的缩写,顾名思义,是可以是的浏览器收藏夹中除显示相应标题外,还能以图标方式区别不同的网站。当然,这不仅仅是 Favicon 的全部,根据浏览器的不同,Favicon 显示也有所区别:在大多数主流浏览器如 FireFox 和 Internet Explorer (5.5 及以上版本)中,favicon 不仅在收藏夹中显示,还会同时出现在地址栏上,这时用户可以拖曳 favicon 到桌面以建立到网站的快捷方式;除此之外,标签式浏览器甚至还有不少扩展的功能,如 FireFox 甚至支持动画格式的 favicon 等。  

      favicon.ico 图标是网站的缩略标志,可以显示在浏览器标签、地址栏左边和收藏夹,是展示网站个性的缩略 logo 标志,也可以说是网站头像,如果要让网站看起来更专业、更美、更有个性,favicon.ico 是必不可少的。  

      从特定的技术角度看,favicon 也并不只是仅仅让网站给人更专业的观感,也可以在一定程度上减轻服务器的流量带宽占用,一般为了提高网站的可用性,我们都会为自己的网站创建一个自定义的 404 错误文件,在这种情况下,如果网站没有相应的 favicon.ico 文件,每当有用户收藏网站/网页时, Web 服务器都会调用这个自定义的 404 文件,并在网站的错误日志中记录。这显然是应该予以避免的。  

      浏览器调用 favicon 的原理是,首先在网页所在目录寻找 favicon.ico 文件,如果没有找到就去网站的根目录寻找。所以最简单的方法就是将制作好的 favicon 文件命名为 favicon.ico 然后上传到网站的根目录下。  
      如果您需要将 Favicon.ico 放到其他目录下,或者希望让不同的网页显示不同的 Favicon ,就需要在网页 Html 文件中做设定了。  


关于favicon.ico的两三事  

本文主要讨论了各个浏览器对 favicon.ico 的不同处理。  

针对如下网页代码进行讨论  
?
1
2
3
4
5
6
7
8
9
10
11
<! DOCTYPE html>
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
     < title >home page</ title >
     < link rel = "icon" href = "Images/wangyi.ico" type = "image/x-icon" />
     < link rel = "shortcut icon" href = "Images/wangyi.ico" type = "image/x-icon" />
</ head >
< body >
     home page
</ body >
</ html >
目录结构如下  
?
1
2
3
4
5
6
7
8
9
folder
   |
   |-- baidu.ico    百度 icon
   |-- home_childe.html
Images
   |
   |-- wangyi.ico   网易 icon
favicon.ico        博客园 icon
home.html
测试通过 http://localhost:3529/home.html 进行网页访问,结果如下:  
  • 通过 360 浏览器浏览网页时,会忽略端口 3529 ,发送的获取 icon 请求是 http://localhost/favicon.ico ,因为发送的目的端口不是 3529 ,所以该请求会发送到网络上,此时获得的 icon 可能是 google 的 icon 。
  • 通过 firefox 浏览器浏览网页时,请求到的 icon 是 link 标签中 href 所对应的图标,即 Images/wangyi.ico 。
  • 通过搜狗浏览器浏览网页时,发送的获取 icon 请求是 http://localhost:3529/favicon.ico ,即获取根目录下保存的 icon 图标。



[架站] 為什麼網站的根目錄最好有 favicon.ico 和 robots.txt 存在?  

该文章解释了为什么网站应该提供 favicon.ico 和 robots.txt 文件。
 

      網站的根目錄最好有 favicon.ico 和 robots.txt 存在其主要的原因是:有些瀏覽器還是會嘗試去存取網站根目錄的 favicon.ico;搜尋引擎的 bots 就是會去一直檢查網站根目錄是否有 robots.txt,所以最好這兩個檔案都存在,以避免你的網頁伺服器,例如: Apache web server,寫了一堆的「File does not exist: …./favicon.ico」或「File does not exist: …./robots.txt」到 error_log 檔案中,浪費儲存空間和伺服器資源。  


WEB优化Favicon请求  

【关于 Favicon】  
  • 总是被命名为 favicon.ico ;
  • 默认存放在网站 web 根目录。我们常常看到这样的一个请求 /favicon.ico ;
  • 它总是显示在浏览器地址栏,网址的左边;
  • 当访问一个页面的时候,不管怎么样,浏览器都会请求这个文件,即 /favicon.ico ;
  • 可以通过在页面的 <head> 部分加入 <link> 元素来重新指定它的位置 <link rel=”shortcut icon” href=http://www.cctv.com/favicon.ico />
  • ico 格式可以是不同分辨率的图像,比如 16×16 ,32×32 等。
(图略)  

      上图从客户端和服务端监测,可以知道每次访问页面的时候,都会访问 /favicon.ico ,不管该文件存不存在(一些工具像 httpwatch、firebug 不会将 /favicon.ico 请求罗列出来)。如果 /favicon.ico 文件不存在,则响应 404 错误。图-1和图-2比较而言,图-1(404 响应)反倒花费的时间更少,这是图-2需要传输 favicon.ico 文件,http 200 响应比 http 404 响应更大。通常在这种情况,我们应该减少对 /favicon.ico 请求来达到整体优化效果。  

【优化 Favicon】  
      确定文件 /favicon.ico 存在,不应该返回 404 错误。404 错误意味着,每次访问浏览器都会重新请求一次 /favicon.ico 。我们应该减少这样的请求,将 /favicon.ico 缓存在客户端。减少不必要的 http 请求是 web 前端优化的一条重要准则  
      设置 Expires 头,将 /favicon.ico 缓存在客户端。比如,Apache 可以通过 mod_expires 增加这样的设置。缓存时间可以是一个月,甚至可以是一年。  
?
1
2
3
4
5
<IfModule mod_expires.c>
       ExpiresActive On
       ExpiresByType image /ico "access plus 1 year"
       ExpiresByType image /icon "access plus 1 year"
     < /IfModule ><span style= "font-family:'Microsoft YaHei';font-size:14px;line-height:1.5;" >    < /span >
通过 <link> 更新缓存。/favicon.ico 名字和位置总是固定死的,如果你需要更新缓存的话,可以通过 <link> 元素重新指定它的位置;  
保持较小的图片大小。虽然 ico 格式文件支持不同的分辨率,但是我们推荐 16×16 大小,并且文件大小在 1kb 左右。  


nginx忽略favicon.ico日志  

      若无法找到 favicon.ico 文件,则会在 nginx 的 error_log 中生成大量错误日志信息,把我们真正需要查看的日志给覆盖。因此这里,我们通过log_not_found off 关闭它。  
      实现方式为,把如下配置放到 server {} 块,用于当 favicon.ico 不存在时,不写错误日志。  
?
1
2
3
4
location = /favicon .ico { ## 采用完全匹配模式
     log_not_found off;    ## 不写 error.log
     access_log off;       ## 不写 access.log
}
      配置项 log_not_found 默认为 on ,用于启用或禁用 404 错误日志,这个指令可以用来禁止 nginx 在找不到 rebots.txt 或 favicon.ico 这类文件时记录错误信息。  
      若设置了 log_not_found off; 则 error.log 中将不出现如下日志  
?
1
2014 /07/28 17:02:49 [error] 3697 #0: *199 open() "/usr/local/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.16.80.111, server: 172.16.81.112, request: "GET /favicon.ico HTTP/1.1", host: "172.16.81.112"
如设置了 access_log off; 则你自定义的 access.log 中将不出现如下日志  
?
1
[172.16.80.111][-][28 /Jul/2014 :17:02:49 +0800][GET /favicon .ico HTTP /1 .1][404][570][-]‘[Mozilla /5 .0 (Windows NT 5.1) AppleWebKit /537 .36 (KHTML, like Gecko) Chrome /31 .0.1650.63 Safari /537 .36][-]

若配置为
 
?
1
2
location /favicon .ico {   ## 相当于模糊匹配
}
则当访问   
?
1
http: //172 .16.81.112 /favicon .ico 或 http: //172 .16.81.112 /favicon .icoXXX
时,则都会在 error.log 和 access.log 中记录日志,且因为匹配成功而不会走反向代理配置。  

若配置为   
?
1
2
location = /favicon .ico {   ## 完全匹配
}
则当访问
?
1
http: //172 .16.81.112 /favicon .ico
时,则在 error.log 和 access.log 中记录日志,且因为匹配成功而不会走反向代理配置。若访问  
?
1
http: //172 .16.81.112 /favicon .icoXXX
则会因为匹配失败而走反向代理。  

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
JavaScript
js上传图片本地预览(整理)
js上传图片本地预览(整理)
|
7月前
|
前端开发
css心动的感觉demo效果示例(整理)
css心动的感觉demo效果示例(整理)
html 案例 --- 网页简历 、简历信息填写
html 案例 --- 网页简历 、简历信息填写
95 0
html 案例 --- 网页简历 、简历信息填写
Hugo 网站优化(1): 渲染 Markdown 图片引用地址
搭建一个自己的博客系统, 优化图片展示, 让书写更简单
373 0
Hugo 网站优化(1): 渲染 Markdown 图片引用地址
|
区块链 UED
网站增加一个ICO站点小图标教程
对于网站的管理员来说,网站的ICO图标更准确的应该叫做站标,是仅次于网站LOGO的标志之一。高品质的ico图标设计更容易使站点获取良好的用户体验。制作ICO图标的工具尽管有很多,但做出一款漂亮的ICO图标,并非是一件容易的事情。
298 0
网站增加一个ICO站点小图标教程
|
Web App开发 缓存 区块链
想在网站中使用其它站点的 favicon,看这篇就够了
最近在开发一个 chrome 插件,其中需要读取到对应网站的 favicon 图标,遇到一些问题记录一下。
html+css实战175-favicon-标题
html+css实战175-favicon-标题
57 0
html+css实战175-favicon-标题
|
前端开发 JavaScript
前端bug录-移动端下载图片
前天,快下班的时候,一朋友发来一个战绩图。 这是要约我上分?(这兄弟一手 C 位吊打亲友)。我果断拒绝三连。 结果,小韭菜问我,右边那个图怎么做?那好了,事情从这里开始
149 0
前端bug录-移动端下载图片
|
存储 Web App开发 编解码
自媒体必备!为了苦苦寻觅图片资源的你,我整理了这些宝藏。
大家好,我是小羽。在当今互联网生活中,无论是做设计、写文章、创作、写PPT等,都会接触到图片、视频和音频这些资源。那么我们该去哪里去找一些优质的免费资源呢?一开始,我也是会直接从搜索引擎去...
238 0
自媒体必备!为了苦苦寻觅图片资源的你,我整理了这些宝藏。
|
Web App开发 移动开发 JavaScript
html5 经验记录 持续更新
1 关于page cache   由于移动端浏览器webkit基本都实现了page cache(火狐叫做back-forwoad cache);所以回退操作基本不会触发onload操作了,不过上一页的状态事件都会保存,一般情况下不会出问题,如果需要每次展现都触发事件可以考虑pageshow事件。
1415 0