链接提交-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操作 ...
随机推荐
- php 关于使用七牛云存储
1.首先注册七牛云存储账号 http://www.qiniu.com/ 2.获得密钥 3.仔细查看文档 http://developer.qiniu.com/docs/v6/sdk/php-sdk.h ...
- 【寒假集训系列DAY3】
DAY2的坑之后会补上 DAY3 今天暴力分拿的还是不错的...60+30+25=115,但还是太弱了呀,每题都只会暴力(话说第3题直接输-1给了15分,本以为只会给5分,然后打了半个小时的爆搜... ...
- A - Infinite Sequence
Problem description Consider the infinite sequence of integers: 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, ...
- Spring Boot (20) 拦截器
动态资源和静态资源 拦截器可以算是aop的一种实现,专门拦截对动态资源的后台请求,也就是拦截对控制层的请求,主要用于判断用户是否有权限请求后台.拦截器不会拦截静态资源,如spring boot默认静态 ...
- elasticearch 归并策略
归并线程配置 segment 归并的过程,需要先读取 segment,归并计算,再写一遍 segment,最后还要保证刷到磁盘.可以说,这是一个非常消耗磁盘 IO 和 CPU 的任务.所以,ES 提供 ...
- vue-cli脚手架安装过程(精简版)
1:打开node的控制台,并找到对应的文件夹 2:检查node的版本 node -v 3:检查npm的版本 npm -v 4:检查cnpm的版本 cnpm -v 5:安装全局及脚手架 cnpm ins ...
- matplotlib之pyplot 学习示例
现在通过numpy和matplotlib.pyplot 在Python上实现科学计算和绘图,而且和matlab极为相像(效率差点,关键是方便简单) 这里有大量plots代码例子. 1. 简单的绘图( ...
- php数据库分页
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Assembly之instruction之CMP
CMP[.W] Compare source and destinationCMP.B Compare source and destination Syntax CMP src,dst or ...
- NDK 使用STL
参考链接:Android中使用STL 1. 在 Application.mk 中添加代码"APP_STL:= gnustl_static"后, 文件中的内容如下: APP_ABI ...