由于Wordpress本身并不带浏览数统计功能(可能是老外并不认为这种华而不实的功能是必须的吧:),因此Clamis在服务器迁移过后照样在WP中安装了一个浏览统计插件。其实在浏览统计插件里面资格最老使用最广泛的应该是WP-Postviews,但是这次Clamis选择的是由台湾网友Richer Yang编写的号称是WP-Postviews增强版的WP-Postviews Plus插件。
按照插件介绍页面所说,同WP-Postviews一样,WP-Postviews Plus也需要在安装过后修改主题文件中需要显示浏览数的位置添加the_views()函数调用。在添加调试完后看上去浏览数可以正常的统计,可是在两天后Clamis发现这个统计似乎有些问题:每篇文章浏览数每天以非常巨大的增幅进行增长,第一篇文章甚至在第三天浏览数就已经过万了。可是这个与百度统计以及Google Analytics的数据相差非常悬殊。这个数据明显应该是已经包含了Bot网络爬虫(也叫网络蜘蛛)的,可是Clamis已经在插件的设定中默认就有“机器人的 User_agent”的判断规则啊,为什么还会有这样的结果出现呢?
经过一番仔细的研究发现,发现原来问题出在WP-Postviews Plus的是否显示爬虫统计的方式与WP-Postviews不同所导致的理解误差!
WP-Postviews浏览数显示方式
对于WP-Postviews插件来说,在主题页面修改时所使用的显示浏览数function就是the_view()函数,因此所有的需要显示统计的页面修改都是增加
<?php if(function_exists('the_views')) { the_views(); } ?>
WP-Postviews Plus浏览数显示方式
可是对于WP-Postviews Plus插件来说却不是这样来控制的。事实上该插件在显示浏览数方面一共提供了三个不同的函数调用,分别是:
- the_views(null, true):该篇文章的总浏览数
- the_user_views(null, true):该篇文章的用户浏览数
- the_bot_views(null, true):该篇文章的爬虫浏览数
所以如果想在页面只显示用户浏览数的话前面那个PHP语句就应该修改为:
<?php if(function_exists('the_user_views')) { the_user_views(); } ?>
事实上详细的function reference在插件安装页面上是有链接的,但是出于之前使用WP_Postviews的惯性思维并没有仔细看这部分从而导致误解。这方面也建议原作者可以在插件的Installation安装说明部分给予更清楚的描述。
两个插件的主要差异
其实从主要功能上来说两个插件基本上是一样的,都是实现对页面浏览数的统计。两者都可以区分剔除Bot网络爬虫统计、可以按照用户类型(注册用户还是访客)进行统计、可以实现缓存下的Ajax更新统计(WP-Postviews更多了对Ajax的控制)、可以按照浏览数排序输出文章列表、可以控制浏览数显示给谁看等等。这里谈下Clamis发现的主要两个不同点:
- 前文提到的两者页面调用统计显示函数不同。
- WP-Postviews只需要修改一次主题PHP页面就可以了,后续到底输出什么类型统计的话完全靠控制面板参数调整即可,但是参数选择的结果会影响所有统计显示。也就是说或者全都显示总浏览数或者全都显示用户浏览数,同时WP-Postviews不能只显示爬虫浏览数(虽然可能这个数没啥大用)。
- 而WP-Postviews Plus则需要根据需求分别调用the_views()/the_user_views()/the_bot_views()这三种不同的函数,优点在于可以同时在一个页面中输出该文章总浏览数是多少,有效用户浏览是多少这样的信息(可事实上这样的应用场景应该是相当少用到的吧)。而缺点就是如果后期需要修改统计显示类型的话需要再次修改主题PHP文件比较麻烦。
- 两种插件对Bot爬虫的判断方式不同。
- WP-Postviews的判断方式是将常见爬虫的user-agent写在wp-postviews/wp-postviews.php页面里面,每次对访问的user-agent进行精确匹配判断是否是爬虫。这样的好处是判断精准速度快,而缺点就是如果用户想增加某个爬虫(尤其是国内的各种爬虫)的user-agent的话需要手动修改php源文件,比较麻烦不说一旦插件升级这些修改就会被覆盖掉。
- WP-Postviews Plus是采用了爬虫关键字模糊匹配的方式,而且用户可以从插件后台自定义关键字。例如插件默认会对所有包含“bot/spider/slurp”关键字的user-agent进行爬虫判断,所以像“baiduspider/360spider/spider/sosospider”等这些国内常见爬虫都可以识别出来。缺点是用户在增加自定义关键字的时候要格外小心,一方面不要增加太多关键字以免增加系统负荷(因为对比次数会随关键字指数级增长),另一方面在加关键字的时候要小心误判将不是爬虫的user-agent判定为爬虫。
以上就是两个常用浏览量统计插件的对比,不管怎么样都要感谢两位插件作者的大力贡献,希望两个插件都可以保持更新下去。