WordPress Comment Digg插件发布

(English release at ifgogo)

自从开通这一功能后,陆续有不少WordPress爱好者问我博客上的“支持”、“反对”是怎么实现的。我想不少人都知道这一功能是把“牛#博”中的支持和反对效果搬到WordPress里面了。八卦一下,这个插件的最初创意和实现应该是老罗的绯闻男友黄斌老师做到的吧(这个结论是通过百度相关搜索得出的,哈哈)?

本来这一产品会较早发布,然而由于第一版正准备发布时,使用了一些署名权不明晰的PHP代码,因此我拜托好友freefcw重写了这些代码,另外,针对之前的版本,对管理界面和前端插入模式进行了一些调整。MySQL和PHP方面主要由freefcw完成,我完成JavaScript和CSS方面。

FYI:之前我曾考虑过把Digg数据存入Option表,后来考虑到可能会给Option表带来许多麻烦,因此这一插件会修改您的comments表,增加两个字段:bury和digg数量。

废话不多说了,下载地址。(如果喜欢,给我一个5分吧,^_^)

效果截图:

安装时只需要解压、激活就可以了。管理界面的截图:

后续计划:可能会引入一些方便使用的Widget,例如本篇文章最受欢迎的评论、最受欢迎的评论者,等。有问题有建议请留言,谢绝灌水。

重点与盲点

也许是巧合,最近收到三封邮件询问我如何处理WordPress的评论翻页功能:有几位朋友,他们的一些文章有数百条评论,一次全部载入太占用资源,只得加上一个“翻页”功能。

这个问题,在2006~2007年也困扰过我,那时我有几篇介绍Widget的文章被不少博客转载,评论数都高达1100多条;还有一篇是我在2005年早期发送GMail邀请的文章,也有900多条评论。为了这几篇文章,我找遍了当时为数不多的几乎所有的WordPress资源站点,花费了无数时间和精力。

其实,“评论分页”真的重要么?现在回想起来,至少对我来说并非如此。在那些我们可以掌控的功能之中,我们总会主观地在意一些方面,例如评论分页。但对于真正使用这一功能的人来说,也许根本就不存在这样的需求。在开启评论翻页之后,我专门做了统计,几乎没有一个用户会去翻看前面的留言。真正值得“翻页”的场合,是评论中含有非常有营养的信息,且这种营养补充了原文的不足。而这种情况非常罕见,尤其对于个人博客来说 – 有营养的评论很难多到需要翻页。我所收获的那些评论,显然不具备这样的价值。

于是我大胆地把多余的旧评论“粗暴”地隐藏了(当然,提供一个“更多”链接以备查找)。一年多来,没有任何影响。那些“顶”“写的不错”之类的评论,还是放在我们的“名人博客”里更合适。

过于重视一些东西,就会忽视一些东西。在做一件事情之前,先想想它是否真值得去做;在为你的用户设计一个功能之前,先想好这个功能到底只是为了满足自己的需求(或者好奇心、或者偏好),还是真正能帮到使用者。

PS:北京的春天景色真不错,大家有空多出去走走!

高流量WordPress博客的优化

老罗被折腾得够惨,王小峰老师的WordPress博客又开始打起了摆子。同学们都觉得心里拔凉拔凉的,有些人问我,是不是WordPress无法用于高访问量的博客建设。我认为不然。今天分享下我的经验和看法,欢迎讨论。

WordPress是一款非常流行的免费开源Blog平台,但是由于其扩展性和兼容性的“负担”,性能问题一直颇受争议。我07年从LBS转换到WordPress的时候,周围许多优秀的PHP程序员都嘲笑过它的PHP代码。然而,经过数年的使用,尤其是对整个WordPress生态链的了解,我越来越肯定:WordPress其实可以做的很好,只是你还没有找到合适的方法而已。

我认为,高流量WordPress博客可以从以下几点入手进行优化:

  1. 使用LAMP架构而不是WAMP(Windows-Apache-MySQL-PHP)
    我对服务端的原理知之甚少,但就我使用LAMP和WAMP的经验来看,前者在性能、稳定性上都占有几大优势。相比WAMP,Linux服务成本极低,而且相比Windows,Linux的理念本身也更为专注于服务器管理和操作。例如,使用wget升级WordPress,下载插件,都十分方便;使用mysqldump和crontab备份数据也安全、简便、可靠。
  2. 安装wp-super-cache等静态缓存插件
    我的博客一直使用wp-super-cache,效果很好。它能够极大程度地节约PHP的执行成本和数据库查询的压力。下载地址。(最好是在LAMP下,我没有测试过WAMP的情况)
    不过,安装了这款插件之后,PHP端对客户端的API就全部失效了。例如你无法在PHP端获得客户端的浏览器类型、版本、Referer值等。如果有相关功能,这时候需要一些JavaScript技巧来改善。例如用jQuery的
  3. 制定一些插件
    如果你的访问量足够高,那么绝对有必要亲自动手或者请懂WordPress系统的人来制定一些插件。很多插件为了考虑兼容性(包括服务器端、客户端),采用了很保守的设计。而针对你自身的系统,这些保守的设计很可能就成为了累赘。例如我自己有一套jQuery的库,就不必再用插件自带的jQuery或者其他Javascript库了;插件还有一个问题也是免费开源软件的通病:规范程度不够好,质量参差不齐,一些插件在存档页面去连评论的数据,就很浪费资源了。
  4. Feed和图片独立
    Feed和图片完全没有必要自己负担:
    a、Feed可以使用FeedBurner(最近Google的动作应该会让河蟹的风险降到最低),也可以使用Feedsky;
    b、图片可以使用Google的Picasa,如果实在觉得麻烦,在上传图片之前,切记裁剪、缩放一下图片,一般来说都可以压缩到100K以内(可以压缩掉90%的体积)
  5. 可以考虑用Nginx代替Apache
    我并不了解Nginx和Apache的内部原理,但我的直觉告诉我,Nginx的效率要高于Apache – 理由是,当我从Apache迁移到Nginx之后,一直没有开super-cache,速度居然也很不错。现在,Alexa排名前100的网站中有2个使用了Nginx(Nginx官方统计)
    值得一提的是,换了Nginx之后,super-cache的rewrite规则不如htacces那么好配置,搜索“Nginx+Super+Cache”会看到很多说明,不再赘述。

WordPress 2.7.1发布

今天,Automattic官方发出公告,2.7.1正式发布。下载地址:2.7.1版本下载 | 最新版本下载(这个地址会自动更新到最新版本)

另外,一些琐碎的事情:

  1. WordPress TV发布(已经有好几周了):http://wordpress.tv – 我有幸参与了这个网站的主要功能设计与开发。可惜,这个网站在国内似乎不太稳定;
  2. 1月29日为“感谢WordPress插件开发者日”:号召广大WordPress用户表示对国内外优秀的WordPress插件开发人员的感谢;
  3. WordCamp可能还要来一次上海,如果有人想成为演讲者或者赞助商,可以和我联系:awflasher+wordpress@gmail.com
  4. 我与Automattic的工程师合作参与开发了一个WordPress MU视频插件,目前接近尾声。不知国内是否有专业WordPress MU运营者,我有一些问题想要与运营方讨论。如果有兴趣,请按照上面的邮箱地址联系我。
  5. 我一直在调查非IT行业的WordPress博客。如果您也是非IT业工作者(最好是:文化产业、制造业、服务业、纺织服装业、环境工程等这些与IT极度不相关的行业。另外注意,我寻找的这些博客,其内容也最好与IT无关),并使用WordPress,并看到这条消息,欢迎留言推荐。

2008年博客数据统计报告

公布这个Blog今年一些有趣的的统计数据。注意,这不是大财团的财务报表,也不是专家分析的行业报告,请当成纯粹数字游戏,切勿较真。

一、总访问量和总收入

今年,awflasher.com域名下所有页面的访问量之和为5,436,583次;总收入为450美元。各方面资金投入至少为2500人民币(不包括我的上网费用和电费)。收支基本持平。相比去年,虽然今年我的eCPM(即:平均一千次访问所获得的收入)只有0.08美元,但由于我将广告位大幅撤掉,用户体验则有所回升,这充分体现在“平均每人浏览页面数”上,今年这个数字为1.57,而去年是1.43,提升了近10个百分点。

我这里也yy一下,如果我的eCPM能有国外博客那么高,我的收入将是8437美元,折合人民币5万多元。也许,当我们到达社会主义中级阶段的时候,会有这个数字哦。恩,那样的话,我将把所得收入的50%分给大家,哈哈哈……(带着大家一起yy一下……)

其实除了Analytics会顺带统计访问量以外,我已经取消了Blog内一切关于流量的统计记录。从03年在朋友的服务器上开始建立自己第一个ActionScript+XML驱动的小Blog,到04年正式启动awflasher.com域名并架设DLog,再到后来的LBlog、LBS阶段,我都很关心文章的流量如何。但是,迷上WordPress之后,渐渐地,我发现过度关注流量是一件毫无意义的、愚昧的事情。毕竟我不靠博客吃饭,也不像徐静蕾那些新浪名博,博客流量是跟着“大生意”走的。通过博客交到的朋友和获得的机会,给我带来的价值远远高如Adsense的那一小笔收入!

二、评论情况

2008年,我的Blog一共收到14,760条评论,占据四年Blogging总量28,936的一半!

不过,Spam在今年也十分猖獗,我一共收到34,947条垃圾广告。其中绝大大部分都被Akismet阻挡在门外,人肉Spam我自己也大有斩获。

值得一提的是,由于人肉Spam猖獗,我彻底去掉了评论中的外部链接。虽然如此,仍然有这么多愿意发表评论的朋友,我很感动。我打算在未来继续修改评论体验,更加追求“有效评论数”,同时也想办法开放一些对外链接,以实际行动回报留言者。

三、最受欢迎的页面

我制作的北京奥运倒计时Widget成了我今年访问量最高的页面。保守估计,它最少被访问250,000次,用户平均停留时间为2分35秒。而这个Widget的日请求数肯定是十万级的。十分感谢Yo2.cn的朋友帮我分流,才没有在这个倒计时牌内部嵌入广告。实际上,我本人也是比较反感广告的,目前我Blog的广告都是随机输出的,而且概率极小,基本不会打扰大家。

四、搜索最多的关键词

统计下来,整个2008年,我的Blog搜索量最大的三个关键词是“王千源”、“北京奥运倒计时”和“百度有啊”,说实话,最后一项实在出乎我的意料!

五、给我带来流量最多的搜索引擎和网站

仅比较搜索引擎网站,百度和Google分别给我了51.3%和45.6%的流量,剩下的分别是Yahoo(2.29%)、Live(0.69%)、Msn(0.02%)

仅比较非搜索类网站,首位是Google Reader,带来32,593次访问;接着是蓝色理想,带给我15,059次访问;鲜果带给我13,165次访问;豆瓣10,077次。很荣幸,这些网站的内容也都非常优秀。

六、浏览器访问情况

由于Google的Chrome浏览器的影响重大,因此我将这一统计分为两部分:

1、在Google推出Chrome之前的比例:

IE仍然是国内主流浏览器,占有90.36%,其中IE6、IE7、IE8分别占74.65%、25.12%、0.10%;

由于我的Blog话题和互联网相关,又有一些技术心得,Firefox用户占有率为8.58%;接下来,分别是Opera和Safari,但都不到0.50%

2、在Google推出Chrome之后的比例:

IE仍然是主流,占有率为88.31%,其中IE6、IE7、IE8分别为72.84%、26.65%、0.47%

Firefox为8.39%,而Chrome跃居第三,为1.92%,剩下的Opera和Safari分别为0.60%和0.30%

在IE、Firefox独霸天下的时候,Chrome仍然可以抢到1.92%的份额,可见Chrome的确是非常优秀的一款浏览器。

七、操作系统访问情况

Windows的垄断只有在统计数据里才会看的清楚:99.10%,剩下的是Linux、Macintosh、iPhone和Symbian,分别只有0.35%、0.34%、0.01%、0.01%

有趣的是,还有3次访问来自“Play Station 3”:)

八、地理位置

按照国家和地区划分:中国大陆 95.59%,美国 1.07%,中国香港 0.45%,中国台湾 0.39%,之后分别是加拿大、日本、澳大利亚、新加坡、英国和德国,都在一万次左右。

细分开来,来自北京的访问最多,有12.8%,剩下的分别来自上海(7.02%)、广州(4.73%)、深圳(3.44%)、杭州(2.64%)、西安(2.18%)、郑州(2.09%)、天津(1.95%)和武汉(1.70%)。

九、RSS访问情况

由于安全限制,我只能采用img标签的方式来统计,在过去的一年内,我的RSS被阅读了462,552次。其中,Firefox用户占有45.6%的比例,领先于IE的36.7%,而Chrome用户则占有11.9%,实在是令我惊讶。

订阅我RSS的朋友请放心,由于我有正规收入,RSS中还是不会添加广告的,此外,我也净化过一次自己的RSS源了。同时也提醒一下大家,在阅读器无法高效过滤垃圾信息的情况下,退订RSS,转而关注鲜果热文中的“互联网”和“实事”频道,是有益处的。

也请时间、精力有限的朋友订阅我过滤之后的RSS,这样,不会被一些无聊的内容所打扰。订阅地址是:feed.awflasher.com

一行代码给你的Blog添加下雪效果

前段时间冷空气突袭的时候,据说郊区密云的雪积得挺厚,但北京城内除了飘了一点小雪粒,毫无动静。应该是气温过高所致,我在慈云寺桥附近拍下的照片可以很好的解释这一点。

不过最近WordPress.com倒是提供了一种让你在Blog下雪的方法(原作者是Scott Schiller),只需要将这行代码加在你Blog的任何位置即可,不需要额外的负担:不用自己维护图片和JavaScript文件(WP.com会帮你出带宽费用,哈哈~)

注意:如果你的Blog不支持JavaScript,则无法使用这一效果,抱歉。

引用代码如下:

http://s1.wordpress.com/wp-content/plugins/snow/snowstorm.js

如果希望拥有像我的Blog这样的效果,即让雪停留在某一固定高度,例如我现在将雪停留在导航栏上,只需要引用我修改后的js即可。为了不影响加载速度,放到</body>前面即可。

所有TES主题用户都可以直接使用这个代码:

var aw_snow_jssrc = '%3Cscript type="text/javascript"';
aw_snow_jssrc += 'src="http://vosforever.app';
aw_snow_jssrc += 'spot.com/static/snow.js"%3E%3C/script%3E';
document.write(unescape(aw_snow_jssrc));

其它主题用户,如果希望改变雪落下的位置,可以使用这个代码:

var customizedHeight = 0;
var aw_snow_jssrc = '%3Cscript type="text/javascript"';
aw_snow_jssrc += 'src="http://vosforever.app';
aw_snow_jssrc += 'spot.com/static/snow.js"%3E%3C/script%3E';
document.write(unescape(aw_snow_jssrc));

同时,你可以根据你的页面导航情况自己定义customizedHeight的值,单位为像素,代表雪停留的位置与页面头部的距离。如果设为0,则落下的雪花会停留在页面最底部。

WordPress 2.7正式发布

是的,WordPress 2.7发布了,下载

8月份左右,我第一次得到“内幕”消息是11月10日左右发布,但没想到最终的正式发布推迟了一个月。不过2.7的后台已经在WordPress.com(GFWed)中使用了一段时间了。反响还是挺不错的。

另外一个好消息是,WordPress.com也已经(GFWed)原生支持Gravatar作为博客头像系统,这一点也让我这名Gravatar项目的贡献者感到非常自豪:WordPress是美国最大的BSP之一,而且提供体验卓越的VIP服务。