链接提交-js代码推送进化版
百度站长平台提供链接索引的自动提交JS脚本已经有一段时日了。用百度自己的话讲:JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用。安装代码的页面在任意平台(浏览器、微信、微博)被加载时,页面链接会被第一时间推送给百度,从而提高站点新内容的发现速度。
是不是很神奇?我们再来回顾一下,这代码长成这样:

(百度JS链接推送代码)
只要把这段代码放入你的每个页面中,每当用户访问这些页面时,就会通过这段脚本从百度下载一个1x1的gif,同时记录页面此时此刻的URL地址。
自动推送脚本的性能考虑
通过这段脚本我们可以看出:
1、它先是判断了目前的协议类型是https还是其他类型(如,http,ftp等)
2、然后下载了百度官方的一个js文件
3、再然后它将js文件的内容生成一个脚本块插入到当前页面中
4、最后会运行这个脚本块
我们可以访问这两个js文件查看其内容,也就是短短的一行。它会读取这样一个gif。
这里我们可以发现两个问题:
其一是这段脚本先后会调用两个百度资源,这造成了冗余,不利于页面加载速度。
其二是该脚本会提交目前URL,但是许多URL会是动态URL,会带各种参数。虽然百度爬虫也有自己的判断方法,但无疑这增加了其负担。
于是,为了解决这两个问题,笔者咨询了好友柴云翔同时是前端开发的大牛。在大牛的帮助下,我们有了下面这个改良版本。
改良版本的百度索引自动推送脚本
这个改良的脚本长下面这样,如果你对js一窍不通,那么请用下图<script>...</script>部分(行6~30)替换原来百度官方的代码。

(改进后的百度索引链接自动提交脚本)
在上图中已加入了注释,下面开始代码解说。
这个新脚本的作用是多了一步查看页面的canonical URL的步骤。我们知道canonical属性表示该页面纵有千种URL的花样,请搜索引擎只认准href中给出的URL值。这样一来就不会让搜索引擎为了同一个页面(或许已经索引了)多次检查你的推送页面具体内容。
这个新脚本的另一个更改是直接将上述两个js的内容拿了出来。由于这两个js中的代码其实是静态的,每次都去调用并不必要。另一方面,我们需要对r的值进行更改,将它更改为canonical URL的值,因此这样解决了我们上面的第二个问题。
最后,一点感想
自动推送是一个很实用的方法,它门槛低,容易部署,但是也有一些小问题。本文只是提供了一种方法来改进自动推送的效率和效果。
需要注意的是百度随时可能更新这两个js文件的内容,虽然该功能上线后一直没有更新不代表以后不会更新,因此需要手动及时更新代码。
上述代码可在这里下载
效果如下:

原文链接:https://blog.csdn.net/yunfupei0434/article/details/78625145
链接提交-js代码推送进化版的更多相关文章
- 百度链接提交-js代码推送批量推送版
		
1原百度JS链接推送代码 首先我们来看一下原百度JS链接推送代码是这*样的 用百度自己的话讲:JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用.安装代码的页面在任意平台(浏 ...
 - 将本地的代码推送到公网的github账号去
		
将本地的代码推送到公网的github账号去 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近工作上需要用到github账号,拜读了一位叫廖雪峰的大神的文档,把git的前世今生说的 ...
 - 使用 git 将代码推送到多个仓库
		
使用 git 将代码推送到多个仓库 起因 起初,在 GitHub 建了一个仓库,200+ 的 commits .后来(终于在眼泪中明白...误
 - 百度链接提交-主动推送Python版
		
百度目前提供自动提交链接和手动提交链接两种方式,其中自动提交又分为主动推送.自动推送和sitemap三种形式,按百度的说法,主动推送的效果最好,百度站长平台后台也提供了curl.php.ruby的推送 ...
 - 信鸽推送 C#版SDK
		
信鸽官方sdk没提供C#版的DEMO,考虑到应该有其他.NET的也会用到信鸽,下面是我在使用信鸽过程中写的demo.有什么不对的地方,欢迎各位大牛指导. 使用过程中主要是有2个问题: 1.参数组装,本 ...
 - 如何添加商*通新对话快捷链接?不用js代码
		
我们在使用商务通一般都是在页面中嵌入一段js代码,如果您是js洁癖,是不是在想着如何直接用一张小图加上商*通新对话链接来代替呢?好,那就一起来研究一下吧. 首先,我们打开一个有商*通js弹窗的页面,比 ...
 - github代码推送
		
git init // 初始化版本库 git add . // 添加文件到版本库(只是添加到缓存区),.代表添加文件夹下所有文件 git commit -m "first commit&qu ...
 - 微信分享朋友链接显示js代码
		
通常自己做的一个页面想通过微信像朋友分享时,展示的标题和描述都是不是自己想要的,自己查了一些资料,原来是通过js来进行控制 展示效果如下: 标题.描述.还有分享的图片都是有js来控制的. js代码如下 ...
 - IDEA将代码推送至远程GitHub仓库
		
1 在项目根路径下添加.gitignore文件 2 创建本地git仓库 3 git add操作 快捷键 ctrl+alt+a 4 git commit操作 快捷键ctrl+k 5 git push操作 ...
 
随机推荐
- idea新建文件无法识别(二)
			
1,出现问题的步骤: 当想新增一个Hello.java文件时候 选错了文件类型.新建了一个text文件.当回过头来把文件后缀改掉的时候发现idea无法识别,颜色一直是灰色. 2,解决问题的办法: 选择 ...
 - POJ  1160 DP
			
题目: poj 1160 题意: 给你n个村庄和它的坐标,现在要在其中一些村庄建m个邮局,想要村庄到最近的邮局距离之和最近. 分析: 这道题.很经典的dp dp[i][j]表示建第i个邮局,覆盖到第j ...
 - JSP页面中path和basepath的含义
			
今天在看代码时,发现程序使用了 request.getScheme() .不明白是什么意思,查了一下.结果整理如下: 1.request.getScheme() 返回当前链接使用的协议:一般应用返回h ...
 - 初学jQuery之jQuery虚假购物车-------与真实数据无关
			
初学者用jquery来写仿真的购物车,确实有点恶心,那我们今天就把这万恶的购物车剖析一下,来看看到底有什么难的. 购物车的效果图 那我们先从复选框开始吧,废话不多说,上代码!! 带有序号的,都是一些分 ...
 - 【C++】cin、cout的效率比scanf和printf低的解决方法
			
玩竞赛的同学应该发现了C++中直接调用cout.cin的效率要比printf和scanf的效率要低. 要解决这个问题,只需要在前面加上一句 std::ios::sync_with_stdio(fals ...
 - vegas pro 15解决导入的视频和音频有噪声问题,亲测可行
			
中文步骤: 按住Shift->点击选项->首选项,松开Shift 点击右上角"内部"选项卡,在最下面的搜索栏输入SO4 找到第二项Enable So4 Compound ...
 - ApplicationLoader登录失败
			
报错:Please sign in with an app-specific password. You can create one at appleid.apple.com 是因为帐号开启了双重认 ...
 - linux配置  yum  源
			
使用 yum 命令安装软件包需要一个yum仓库(即yum源),yum通过客户端(yum命令本身即是yum客户端)去连接yum源服务器,CentOS默认yum源为官方的 http://mirrorlis ...
 - InnoDB undo log物理结构的初始化
			
水平有限,如果有误请指出.一直以来未对Innodb 的undo进行好好的学习,最近刚好有点时间准备学习一下,通过阿里内核月报和自己看代码的综合总结一下.本文环境: 代码版本 percona 5.7.2 ...
 - 实现Modbus ASCII多主站应用
			
1.更新设计关于原来的协议栈在Modbus ASCII主站应用时所存在的局限性与Modbus RTU也是一样的,所以我们不分析它的不足,只讨论更新设计.我们将主站及其所访问的从站定义为通用的对象,而当 ...