百度⾃动推送代码JS⾃动推送进化版
百度站长平台提供链接索引的⾃动提交 JS 代码脚本。⽤百度⾃⼰的话讲:JS链接推送代码以⽹页为最⼩对象,服务于全平台多终端,PC站和移动站均可使⽤。安装代码的页⾯
在任意平台(浏览器、、微博)被加载时,页⾯链接会被第⼀时间推送给百度,从⽽提⾼站点新内容的发现速度。
今天IT粉丝⽹分享的这个⾃动推送 JS 代码进化版来⾃百度站长学院
先来看看百度站长默认的⾃动推送 js 代码是这样的:
<script>
(function(){
var bp = ateElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'zz.bdstatic/linksubmit/push.js';
}
else {
bp.src = 'push.zhanzhang.baidu/push.js';
}
var s = ElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
只要把这段代码放⼊你的每个页⾯中,每当⽤户访问这些页⾯时,就会通过这段脚本从百度下载⼀个1x1的gif,同时记录页⾯此时此刻的URL地址,然后推送给百度。
使⽤百度默认的代码有两个问题:
第⼀这段脚本先后会调⽤两个百度资源,这造成了冗余,不利于页⾯加载速度。
第⼆该脚本会提交⽬前URL,但是许多URL会是动态URL,会带各种参数。虽然百度爬⾍也有⾃⼰的判断⽅法,但⽆疑这增加了其负担。
于是,为了解决这两个问题,笔者咨询了好友柴云翔同时是前端开发的⼤⽜。在⼤⽜的帮助下,我们有了下⾯这个改良版本。
<script>
(function(){
var canonicalURL, curProtocol;
//Get the <link> tag
var ElementsByTagName("link");
//Find the last canonical URL
if(x.length > 0){
for (i=0;i<x.length;i++){
if(x[i].LowerCase() == '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\)/gi,r=canonicalURL,ferrer;if(!e.test(r)){var n=(String(curProtocol).toLowerCase() === 'https')?"sp0.baidu/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif":"//api.share. </script>
这个新脚本的作⽤是多了⼀步查看页⾯的canonical URL的步骤。我们知道canonical属性表⽰该页⾯纵有千种URL的花样,请搜索引擎只认准href中给出的URL值。这样⼀来就
不会让搜索引擎为了同⼀个页⾯(或许已经索引了)多次检查你的推送页⾯具体内容。
js脚本开发
这个新脚本的另⼀个更改是直接将上述两个js的内容拿了出来。由于这两个js中的代码其实是静态的,每次都去调⽤并不必要。另⼀⽅⾯,我们需要对r的值进⾏更改,将它更改
为canonical URL的值,因此这样解决了我们上⾯的第⼆个问题。
IT粉丝⽹看到这个版本好处在于推送的链接是 canonical 标签属性⾥⾯的链接,对于⽹站链接有过改版的⽹站是友好的,不会重复推送链接,上⾯的代码适⽤于任何⽹站!
需要注意的是使⽤这个改进版,百度默认的推送代码不能变,如果默认的⾃动推送代码改变,这个也会失效!
个⼈认为这个代码适⽤⾃适应站更好,因为⾃适应站⼿机版和PC版地址相同,通过canonical标签重新定义了标准的链接,那些带参数的,直接就不再进⾏提交。如果是
m.XXX这样的,和www.XXX这样的⽹站,⼀般移动端会canonical会指向PC端链接。按这种⽅法不会提交⼿机版,觉得并不恰当。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。