当前位置

清除百度MIP缓存,纠正跳转错误

James Qi 在 2019年1月28日 - 09:56 提交

  百度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"},那应该也是提交成功。

自由标签:

评论

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。