百度自動推送代碼優化

SEO

每個站長都知道。做網站想要加快收錄的速度,必須要在想被收錄的頁面添加百度的自動推送代碼,此代碼讓用戶每次瀏覽該頁面的時候都會向百度提交一次。省去了站長的人工操作,極大的提升了收錄效率。但是這代碼中每一行的含義卻少有人知道,僅知道此代碼可以自動推送,卻不知道是如何實現的,假如知道每一行的含義,則可以根據需要進行自行設置,以降低代碼的冗余,提升運行效率。代碼如下:

<script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';        
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>

我們來仔細看看這個JS代碼,它首先是用if函數判斷了當前瀏覽的網址協議是經過SSL加密過的https或者是其他類型的網址,根據不同的類型分別訪問了2個JS文件。之后會將訪問的JS文件內容生成腳本插入到當前的url頁面中,運行該腳本則會讀取對應的一個非常小體積的gif圖像,在這個過程中將url地址推送到百度中。
分析了以上代碼我們會發現,它在判斷的時候會加載2個百度的js資源,這個可以根據用戶自己的url地址類型去掉不必要的判斷,并且可以將其直接替換為gif地址。另外一點就是當訪問的url地址為動態地址,帶有非常多的參數的話,是很不利于搜索引擎爬蟲的抓取的。我們在之前使用MIP的時候接觸了一個非常有用的標簽,那就是canonical標簽,可以使用該標簽對這一點進行優化。
優化后的代碼如下:

<script>
    (function(){
        var canonicalURL, curProtocol;
        //Get the <link> tag
        var x=document.getElementsByTagName("link");
        //Find the last canonical URL
        if(x.length > 0){
            for (i=0;i<x.length;i++){
                if(x[i].rel.toLowerCase() == 'canonical' && x[i].href){
                    canonicalURL=x[i].href;
                }
            }
        }
        //Get protocol
        if (!canonicalURL){
            curProtocol = window.location.protocol.split(':')[0];
        }
        else{
            curProtocol = canonicalURL.split(':')[0];
        }
        //Get current URL if the canonical URL does not exist
        if (!canonicalURL) canonicalURL = window.location.href;
        //Assign script content. Replace current URL with the canonical URL
        !function(){var e=/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.baidu\.com)/gi,r=canonicalURL,t=document.referrer;if(!e.test(r)){var n=(String(curProtocol).toLowerCase() === 'https')?"https://sp0.baidu.com/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif":"http://api.share.baidu.com/s.gif";t?(n+="?r="+encodeURIComponent(document.referrer),r&&(n+="&l="+r)):r&&(n+="?l="+r);var i=new Image;i.src=n}}(window);})();
</script>

從這個優化過后的代碼中引入了canonical標簽,無論用戶訪問的url地址帶有什么樣的參數,均會返回canonical標簽唯一對應的url地址,大大減少搜索引擎爬蟲的負擔,并減少搜索引擎爬蟲對同一頁面的抓爬次數,這對于具有大量動態url的網站來說是非常大的提升。另外從優化后的代碼中也可以看到,使用了一個三元運算來對url的協議類型進行判定,判定后的結果會直接訪問百度對應的gif地址,從而去除了之前代碼訪問JS腳本的操作,也在一定程度上對頁面的性能進行了優化,提升了頁面運行的效率。
在使用優化后的代碼需要注意的是
1、將r=localcanonicalURL的值修改為用戶自己的canonical標簽所對應的url的值;
2、時常訪問gif地址,確保地址正確可以訪問,否則代碼會失效,需進行手動更新。

本文地址:http://www.52aite.cn/archives/294

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,814評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,508評論 7 249
  • 如果說,這離別足夠短暫 那我想我應該不會這樣急切地 尋覓,尋覓,失魂落魄地尋覓 我不知道你的方向 甚至不知道 你還...
    王不煩閱讀 340評論 0 0
  • 晚上四歲女兒耍賴不刷牙,我沒辦法,說:“那好吧,我沒意見,不過得讓我看看你的牙齒臟不臟。”她像小恐龍一樣張開嘴。 ...
    點點天恩閱讀 694評論 2 1