Favicon

Favicon是favorites icon的缩写，亦被称为website icon（网站图标）、page icon（页面图标）或urlicon（URL图标）。Favicon是与某个网站或网页相关联的图标。网站设计者可以多种方式建立这种图标，而目前也有很多网页浏览器支持此功能。浏览器可以将favicon显示于浏览器的地址栏中，也可置于书签列表的网站名前，还可以放在标签式浏览界面中的页标题前。

最初，定义一个favicon的方法是将一个名为“favicon.ico”的文件置于Web服务器的根目录下，Internet Explorer的收藏夹（即书签）可以自动显示该文件。 后来出现了一种更为灵活的方法，即使用HTML来为任何一个网页指示其图标所存储的位置。这种方法是通过在页面的<head>部分添加两个link元件来实现的。这样，任何一个适当大小的（16×16像素或更大）的图像都可以用作favicon。尽管如此，多数情况下仍然使用ICO格式。其他网页浏览器现在也支持PNG（便携式网络图片）格式，和GIF（图形交换格式）动画图像格式。

市面上多数浏览器同时支持上述两种方法。正因此，网络服务器要接受很多对“favicon.ico”文件的请求，即使该文件根本不存在。网站管理员对此很不满，因为这样会增加大量的服务器日志项，并导致很多不必要的磁盘读取和CPU、网络资源的占用。另一个常见的问题是，当清除浏览器的缓存后，favicon可能会消失。

歷史 
1999年3月，Internet Explorer最早仅仅将favicon用于收藏夹（例如MSIE 5.0）。这产生了一些关于隐私问题的考虑，因为网站拥有者可以通过检查访问日志察看有多少人下载了favicon.ico文件，判断有多少人将他们的网站放入收藏夹中。然而，自从許多其他浏览器开始在每次访问时都将favicon显示在地址栏上，这就不再是一个问题了。

标准化 
Favicon功能最早由微软创设，而微软公司的Internet Explorer网页浏览器会对每一个网站都请求favicon。微软支持的link标签不遵从World Wide Web Consortium（W3C，万维网联盟）的HTML建议，因为：
 rel属性必须包含一个用空格作分隔符的link类型的列表，所以一个包含两词的link类型不能被遵守标准的浏览器理解。
 “.ico”文件类型（一种用于Microsoft Windows上图标的光栅格式）没有一个注册的MIME类型，而且似乎在当时也不能被多数浏览器理解。然而2003年，这一格式在IANA获得注册，其MIME类型是image/vnd.microsoft.icon，进而消除了此问题的第一部分。
 在网站上使用保留地址（reserved location）与Architecture of the World Wide Web（互联网的结构）矛盾，同时被认为是link squatting（链接劫持）或URI squatting（URI劫持）。

Mozilla浏览器通过一种遵从Web标准的方法添加了对favicon的支持。它采用rel="icon"并允许网络设计人员添加任何支持的图像格式的favicon。例如。后来鉴于此功能将被用于所有新内容，多数浏览器都对此功能增加了支持。

根据《HTML 4.01 Specification W3C Recommendation 24 December 1999》，rel属性的取值仅有：
 Alternate
 Stylesheet
 Start
 Next
 Prev
 Contents
 Index
 Glossary
 Copyright
 Chapter
 Section
 Subsection
 Appendix
 Help
 Bookmark

如果要采用其他值，应当在head标签中的profile属性中进行自定义。W3C给出了一个建议：《How to Add a Favicon to your Site》。

简单地说：
 在head标签中-{zh-cn:添加; zh-tw:加入;}-profile属性指向http://www.w3.org/2005/10/profile。
 用link标签指向Favicon URI，rel值为icon

一个常见的错误是不指定profile。

指导 
过去，为保证favicon出现，网站设计者和开发者采用了多种方法。很难明确地保证favicon可以在所有电脑上显示，即使是用同一版本的一种浏览器。

下列代码另一个局限就是它把favicon关联到了某个特定的HTML或XHTML文档上。为避免这一点，favicon.ico文件应置于根目录下。多数浏览器将自动检测并使用它。

 建议包含以下两行HTML代码：
<link rel="shortcut icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon" />
<link rel="icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon" />

 然而，只有第一行是必须的，因为“shortcut icon”字符串将被多数遵守标准的浏览器识别为列出可能的关键词（“shortcut”将被忽略，而仅使用“icon”）；而Internet Explorer将会把它作为一个单独的名称（“shortcut icon”）。这样做的结果是所有浏览器都可以理解此代码。只有当希望为新浏览器提供另一种备用图像（例如动画GIF）时，才有必要添加第二行。
 在HTML中，link元件必须在head元件里（在<head>和<code></head></code>之间）。
 对于XHTML，link必须使用“ />”结束（或“></link>”），而不可以使用“>”结束。
 href可以，但不必指向/favicon.ico的位置。它可以指向任何URL。
 图像通常可以使用任何被浏览器支持的图像格式。
 .ico文件格式通常可以被所有可以显示favicon的浏览器读取。
 设置服务器，以发送正确的MIME标识：
 ICO 文件 image/vnd.microsoft.icon（或者亦可出于兼容性原因使用image/x-icon。然而最好使用IANA注册的MIME类型，因为多数主流浏览器现在支持它）
 GIF 文件 image/gif
 PNG 文件 image/png
 使用适当的分辨率和色深。 
 ICO：包括多种分辨率（最常使用的是16×16和32×32，Mac OS X有时使用64×64和128×128）以及位深（比特每像素）（多数使用4、8、24 bpp，即16、256和1600万色）。
 GIF：使用16×16，256色。
 PNG：使用16×16，256色或24位。

注意：当favicon.ico被置于文档根目录时，将会被一些不处理link元件的浏览器找到，即使没有您的站点上没有指向它的链接。

参考

外部链接 
 W3C网络标准化组织关于如何添加favicon的建议
 如何使用PHP添加favicon。
 MSDN Library: Win32的图标
 Online favicon editor: 在线制作Favicon图标
 （有些过时的信息）
 MSDN Library: 自定义站点图标

電腦圖示
網頁瀏覽器
全球資訊網