百度MIP有批量提交API我们用过,看到有清除MIP缓存的API,但以前没用过。最近我们在百度搜索资源平台发现一个奇怪的问题:流量排在最前面的全部都是www.example.com/xxx/node/13865?mip这样的网址,在手机百度里面各种搜索词本来应该是到我们站不同的页面,但却都指向了上面这一个网址,从百度统计中看是从2019年1月5日开始的,但原因找了几天都找不到,在www.baidu.com中搜索结果点击到我们站都是正常的,但m.baidu.com中搜索结果点击到我们站却是错误的。
我们想到可能是百度自己的MIP页面索引出了问题,给资源平台反馈中心留言也一直没有得到答复,最后只好试一试清除MIP缓存。先是采用的如下代码ecs-0: mip/clear_mip_cache.php:
<?php $delay = 11; $my_key = '116e......28ab'; $my_url_array = array( 'www.example.com/shandong/node/905169', 'www.example.com/shandong/node/905169?mip', 'www.example.com/shandong/name/%E5%B1%B1%E4%B8%9C%E6%99%B6%E5%B8%8C%E7%93%B7%E6%96%B0%E6%9D%90%E6%96%99%E7%A7%91%E6%8A%80%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8', 'www.example.com/shandong/name/%E5%B1%B1%E4%B8%9C%E6%99%B6%E5%B8%8C%E7%93%B7%E6%96%B0%E6%9D%90%E6%96%99%E7%A7%91%E6%8A%80%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8?mip', ); function clear_mip_cache($my_key,$my_url) { $api = 'http://c.mipcdn.com/update-ping/c/'; $postData = "key=$my_key"; $url = $api.$my_url;//$api.urlencode('m.120ask.com/askg/bd_detail/39372771'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); $result = curl_exec($ch); curl_close($ch); echo $result; } foreach ($my_url_array as $number => $my_url) { print "number = $number, my_url = $my_url\n"; clear_mip_cache($my_key,$my_url); print "\ndelay $delay seconds ...\n"; sleep($delay); } print "end\n"; ?>
这个办法是逐个mip页面清除缓存,但有一定限制:100秒内不超过10个页面,所以我只好在上面程序中加了延时。而我们的MIP页面数量都是十万、百万数量级的,这种清理办法太慢。
同事在网上找了批量清除MIP缓存的办法,我就另外写了一段程序ecs-0: mip/clear_mip_cache_bulk.php:
<?php //jamesqi 2019-1-24 $my_key = '116e......28ab'; $my_host = 'www.example.com'; $my_path = '/'; //$my_url = 'www.example.com/shandong/node/13865?mip'; print "my_host = $my_host, my_path = $my_path\n"; $api = 'https://c.mipcdn.com/update-ping/refreshcache'; $postData = array( "host" => $my_host, "path" => $my_path, "authkey" => $my_key, ); //print_r($postData); $postData = json_encode($postData); //print "postData = $postData\n"; $url = $api; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); $result = curl_exec($ch); curl_close($ch); echo $result; print "\nend\n"; ?>
使用这个办法,每天可以清理10万个MIP页面的缓存,上周五运行后,今天周一看基本上MIP缓存都被清理了。然后本文最开始说的手机百度搜索都跳转到一个mip页面的问题也解决了,都是跳转到正常对应的页面了。
2019年3月17日补充:近日发现从2月16日左右百度手机版的搜索再次出现类似问题,不是上次的MIP页面出问题,而是百度手机版m.baidu.com中搜索我们网站,很多都访问到www.example.com/xxx/node/40933 这样的网址,在百度PC版www.baidu.com中搜索没有这个问题。尝试了在robots.txt中屏蔽node/40933的抓取和索引,没有效果。此问题还在排查中。
2019年4月30日补充:在d-ecs-1/root/amp下设置一个clear_amp_cache_bulk.php,从百度资源平台获取Authkey后运行,得到回应:{"status":0,"message":"request submit success"},那应该也是提交成功。
评论1
博主说的很对,这样确实能解决问题
博主说的很对,这样确实能解决问题