在xiuno点击服务里,官方有这么一句话:
// 如果是大站,可以用单独的点击服务,减少 db 压力
// if request is huge, separate it from mysql server
thread_inc_views($tid);单独的点击服务自然是比较复杂,实现上难度也比较大,毕竟单独的点击表将需要更多的代码修改。实际上对于一些中等站点,当点击服务对网站页面打开的压力增大的时候,采用异步执行也不失为一个好的办法,异步执行可有效降低帖子页面的打开时间,提升用户体验!那么如何处理呢?
首先,我们需要修改文件:route/thread.php,搜索代码thread_inc_views($tid);
改为 //thread_inc_views($tid); 即注释掉这行代码。
其次,修改文件:view/htm/thread.htm ,搜索// 输入框自动伸缩 ,在这行代码下增加一个JS执行,如下:
$.xpost('call_viewscount.htm', "ac=call_view&tid="+<?php echo $thread['tid']; ?>, function(code, message) {
});
在call_viewscount.php里,输入一下代码并将该文件放到 route/ 文件夹内:
<?php
!defined('DEBUG') and exit('Access Denied.');
$action = addslashes(param('ac'));
$tid=addslashes(param('tid'))
if ($action == 'call_view') {
thread_inc_views($tid, $n = 1);
}在index.inc.php 文件里,搜索 // hook index_route_case_end.php,在下面一行添加case 'call_viewscount': include include(APPPATH.'route/call_viewscount.php'); break;
如果你稍微懂点xiuno开发,这里应该已经了解的差不多了,没错,就是利用访问帖子页面时,JS自动访问 call_viewscount.htm文件来对当前页面进行一次点击统计服务。如此一来,帖子的访问就不会因为统计服务执行缓慢而延迟打开,也可以有效防止机器访问造成的浏览量快速刷新问题(除非机器访问也能执行JS)!