最近在学习用 PHP 仿照 Read It Later 的界面和 Delicious 的浏览器 bookmark 插件机制,写一个自己的网址收藏工具。期间涉及到一个细微的功能要求:获得被收藏网站的 favicon 图标。
最直接的方法自然是直接从网站根目录下读取图标,形如:
http://www.fanbing.net/favicon.ico
网上流行的另一个 hack 是调用 Google 的网站缓存,这不失为借助外力的一种绝佳途径。
调用 Google 缓存地址,形如:
http://www.google.com/s2/favicons?domain=fanbing.net
好处是 powered by Google ,保证了调用速度足够快,不影响访客阅读体验。但要求限制也比较严格,不能带http://,只能是根目录。
然而在我的实际代码中,由于被收藏的网址并不一定是网站根目录,且网址可能的展现形式多样(含/不含http或https、含/不含www、是/不是网站根目录、是/不是子目录、是/不是子目录下的具体文件名、是/不是动态生成的地址、是/不是用bit.ly或goo.gl等服务生成的短地址等),因此仅仅基于被收藏网址的URL这一堆字符串,判断和处理起来异常繁琐。
为此我设法搜索到又一个(不完美)解决这一问题的外援, GetFavicon.org 。站如域名,就是用来快速获得某个网站图标的。