前言

写出这个文章,是因为我看到谋篇博文,所以突发奇想,故此有了本文

特别说明下

下列代码方法,虽然能用,但是百度有验证,不建议使用,有另外的方法,下文有讲解到!
替代方法更加管用!更加实在!那就是神奇的API

实现过程

文件名称:baidu.php
先来看PHP支持Redis的方式,强烈推荐此方法,因为像网站总收录量这种,每天查询一次即可!实时查询是没有必要的!

<?php
//声明是 json 数据
header('Content-type: application/json'); 
//允许跨域
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Headers:x-requested-with,content-type");
//连接 redis
$redis = new Redis(); 
$redis->connect('127.0.0.1', 6379); //连接 Redis
//Redis 有密码就写没有就注释
//$redis->auth('密码')
if (!$redis->exists('baidunum')) {
    $data = c('http://www.baidu.com/s?wd=site:kieng.cn');
    preg_match('/百度为您找到相关结果约(.*?)个/', $data, $num);
    $redis->set('baidunum',$num[1],60*60*24);//缓存一天
    echo json_encode(['data'=>$num[1]]);
} else {
    $num = $redis->get('baidunum');
    echo json_encode(['data'=>$num]);
}
function c($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

如果没有安装 Redis 代码如下

//声明是 json 数据
header('Content-type: application/json'); 
//允许跨域
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Headers:x-requested-with,content-type");
 
$data = c('http://www.baidu.com/s?wd=site:kieng.cn');
 
preg_match('/百度为您找到相关结果约(.*?)个/', $data, $num);
 
echo json_encode(['data'=>$num[1]]);
 
function c($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

但是我不建议使用以上这种,因为以上这种可以说是实时加载,会造成页面载入过慢等问题
按照大神们的说法是"最好是用缓存,因为装逼…(因为采用 jQuery 异步加载不会造成网站速度问题)"

接下来就是JavaScript部分了

$(function() {
    $.get('https://www.kieng.cn/baidu.php', {},
    function(data) {
        //前这个标签前面添加文字 $('.yunluocopyright') 处就是需要加载的 class 的名字
        $('.yunluocopyright').prepend('百度已收录' + data.data + '个页面 | ')
        //向后添加就是
        //$('.yunluocopyright').append('百度已收录' + data.data + '个页面 | ')
    })
})

当然您也可以在底部写个 div 或者 span 标签,如

//html 部分
<span id='baidunum'></span>
//js 部分
$(function() {
    $.get('https://www.kieng.cn/baidu.php', {},
    function(data) {
        $('#baidunum').html('百度已收录' + data.data + '个页面 | ');
    })
})

在Handsome模板中实现以上功能

首先你需要在网站根目录创建一个baidu.php的文件,确保能获取到数据!
登录后台-Handsome模板-外观设置-开发者设置-自定义 JavaScript
然后修改模板某个位置(你想在哪里显示的),把数据调用出来即可,调用方法以上已经说明了!

突发奇想

由于我PHP安装了Redis扩展,我就想着,我是不是能用同样的方法,去蹭各种免费API来用呢?
我就想到了API数据接口平台,虽然都是收费的,但也有免费的量呀,关键是我不需要实时查询,我每天只需要查询一次即可!
API数据接口平台:http://api.chinaz.com/home/browseapi

我发现有几个还是非常适合博客目前情况的,例如以上的百度收录量,他有时候会有验证,那这个就很苦恼的,那如果是用收费的API则不会有这个限制,这多好,还是大公司的提供的收费API,稳了!另外还可以添加另外几家的收录量查询,也是蛮方便的!
另外玩Handsome模板的我不知道你们发现没,文章也顶部添加文章是否被收录这种,我们之前是按照别人的方法操作的,但实际上是失效了,没用了的!

当然本博客也是这样的,我只是没有修改回来而已,但是我发现API数据接口平台他也提供了URL收录查询这个接口

那么就可以利用以上的方法,把这些失效的功能,全部用起来了!
那么此时有人问我,为什么不做实时的呢,原因其实是非常简单的!
百度收录量是完全没有必要实时查看的,24小时更新一次就稳了!所以是要用Redis支持缓存,时间设置24小时即可!
这样,只有每天在第一次触发的时候,才会在我们的站点更新百度收录量,后面的重复访问,获取的都是缓存,这样既可以使用大公司的API接口,又可以稳定!虽然免费条数有100条,但也能用100天呀,或者我干脆充值个1元钱,我能用好几年呢!
文章触发也是一样的道理但是URL收录查询接口只有100条,所以此处我们必须要去其他的平台寻找下,因为文章数量比较大,所以此处可以设置缓存为2天,或更长,根据实际情况选择,最好我们在去其他大公司的API接口平台找下,那些有每天免费额度的,这样就可以不怕用到量了!

最后修改:2020 年 07 月 16 日 04 : 27 PM
赞赏必须赞赏,多多益善,老板一直发大财!