百度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
博主說的很對,這樣确實能解決問題
博主說的很對,這樣确實能解決問題