个人网站SEO及其它优化

最后一次更新时间:Monday, April 20th 2020, AM

 

SEO,是Search Engine Optimization的缩写,中文意思是搜索引擎优化。通俗的说,就是如何让你自己的网站更容易的被搜索引擎收录,并且取得一个较为靠前的排名,让别人更容易地搜索到你,为自己的网站增加更多的曝光率与点击率。

 

如下图所示,网站在直接搜索名字的情况下,排名第五
(排在前边的自然是Facebook,Linkin这种,希望有朝一日能干掉他们hhhh)

 

在搜索站内博客的情况下(全网无重复),排名第三

 

在搜索网站Title的情况下,排名第一、第二

 

 

 

上边是优化后,进行Google搜索的结果展示。可以看到,无论是网站标题,还是站内二级博客,二级Tag,Google均对其进行了索引与收录。由于Baidu站长提交过程等待时间过长,我的网站还未被收录,这里就不进行展示了,不然还要等好久。下边就介绍一下我做了哪些优化

 

 

 

Baidu收录

首先是Baidu收录。作为国内最大的搜索引擎,纵然千般不爱,还是要

在提交链接到Baidu之前,首先需要购买一个属于自己的域名,不可以直接用Github Page提供的形如xxx.github.io这个域名。因为Github不允许Baidu的spider爬取自己的信息(例如Taobao)

注册完域名之后,绑定到自己的网站/Github Page的IP,这里就不赘述了,网上教程一大把。在浏览器测试可以访问后,就可以开始Baidu的优化了

 

首先呢,要注册一个Baidu站长的账号,然后在站长工具里提交绑定了你网站的域名。由于我这边早就已经做完这个流程,这里就不进行复现了。各位可以直接点击此处,提交链接到Baidu,如下图所示,填入自己网站URL,点击提交。

提交完之后,要证明网站的所有权,才能把其绑定到自己的Baidu账户下,方便日后通过站长工具进行分析、管理数据等操作。这里Baidu提供了三种验证方法,分别是
1.文件验证
2.html标签验证
3.CNAME验证

这里我选择的是CNAME验证,如下图:

然后在域名服务提供商那里,添加一条解析记录就可以生效。我的域名服务提供商是腾讯云

好啦,到这里就算是收录完成。之后还可以通过站点地图进行优化,后边我会说到。接下来让我们进行Google的收录

 

 

 

Google收录

Google的收录需要各位自行准备梯子,请自觉遵守中国大陆法律法规。
和Baidu一样,首先要准备一个Google账户,然后点此链接进入GoogleSearchConsole,点击添加资源,如下图。如果你使用的域名服务提供商是GoDaddy或NameCheap,则可以通过左边的网域选项,去验证所有权。我的域名服务提供商是腾讯云,只能通过右边的选项进行验证,在右边横线处填入你网站的完整URL。

然后点击继续,如下所示

下载GoogleSearchConsole提供给你的那个html文件,将其git push到你网站的根目录下,然后回来点击验证,验证成功即可证明所有权,方便日后的分析、管理数据等操作。

 

 

 

Site Map

Sitemap的定义(Wikipedia) || Definition of Sitemap (Wikipedia)

SiteMap是一个描述网站架构的文件,它可以帮助搜索引擎spider更好的抓取网站,理解网站结构与内容,优化通过搜索引擎搜索到站内内容等等好处。其实顾名思义,网站地图,有了这个地图就可以随便逛你的网站,不会迷路。就像外出旅游,景区发给游客的指南一样,是不是一下子就理解了~~

 

那么第一步,我们要做的就是

生成SiteMap

使用npm自动生成网站的SiteMap,然后将生成的SiteMap提交到Baidu和Google
执行如下两条命令,安装SiteMap生成插件

1
2
npm install hexo-generator-sitemap --save     
npm install hexo-generator-baidu-sitemap --save

然后,在项目配置文件中,修改下图中的URL:

最后Ctrl S保存,hexo g重新生成,hexo d部署到服务器上即可。接下来就是

提交到搜索引擎

提交到Baidu

百度提供了三种提交的方式,分别是主动推送、自动推送、Sitemap。其中主动提交更新的效果比较好,并且一次设置好,以后就可以自动执行。

通过如下命令下载插件:

1
npm install hexo-baidu-url-submit --save

然后在项目配置文件中,添加如下代码:

1
2
3
4
5
baidu_url_submit:
count: 100
host: # 在百度站长平台中验证的域名
token: # 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里

并且依旧在项目配置文件中,如下添加一条deploy的type

接着,是设置自动推送。在主题配置文件中,设置baidu_push: true,如下图

然后修改如下路径文件

1
/themes/next/layout/_scripts/baidu_push.swig

添加代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{% if theme.baidu_push %}
<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>
{% endif %}

最后回到Baidu站长平台,提交网站文件,如下图

到此,Baidu的优化就算是告一段落。但是Baidu的收录特别慢,一般都得是半个月左右,耐心等待吧。

接下来就是

提交到Google

提交到Google的方法和百度原理相同,过程简单很多。访问GoogleSearchConsole,然后添加即可,如下:

Google的收录速度非常快,我部署完Baidu又部署Google,晚上10点才弄完。第二天早上7点醒来发现Google已经成功收录

 

 

 

网站内URL优化

Hexo默认博客的URL是sitename/year/mounth/day/title这样一个四级结构。结构越深越不利于搜索引擎的爬取,一般都以三级以下为较好的深度。

如下两图所示,优化后,这篇博客是一个二级目录,有助于搜索引擎爬取,搜索结果排名第三


具体优化步骤如下:
打开项目配置文件,找到permalink,如下第五行进行修改

1
2
3
4
5
6
7
8
9
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://ryanyhliu.com
root: /
permalink: :title.html
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks

之后Ctrl S保存,hexo g重新生成,hexo d部署到服务器上即可。

PS:我个人在此处遇到了一些别的问题,即图片无法显示。在浏览器端按下F12,打开开发人员工具,发现图片链接有误,生成静态页面的时候多加了一条反斜杠,如下图所示

我的解决方法也很暴力,直接在源码里多加一条反斜杠。

如果各位看官有什么更好的解决之道,望不吝赐教。

 

 

 

CDN

介绍

CDN的全称是Content Delivery NetWork,即内容分发网络。举个栗子,在大家刷抖音短视频时,向抖音服务器发送一条请求,抖音服务器基于推荐算法向你分发一条你可能感兴趣的短视频,那么大概的网络拓扑应该是如下图所示

可以看到,这么多客户端同时连接根服务器的话,根服务器需要一个十分可观的带宽进行支持,就好比很多车辆一起汇入主干路,那么这条主干路一定要十分宽敞。但是一条已经建成的马路,对其进行扩容是十分复杂的工程,并且考虑到高峰期,资源浪费十分严重,再就是较高的带宽的预算也非常高。以百度云盘为例,存储设施、电费等,均不及带宽服务费所占的支出,这也是为什么百度云盘限速厉害,吃相如此难看的本因。

 

那么CDN的运作原理,如下图所示

在服务器与客户端之间,多了一层代理服务器。它们起到了分流的作用,就好比汇入主干路的匝道。也许你会想,那反正都要汇入主干路,根服务器的带宽要求岂不是并没有降低?这里又要涉及到CDN的另一个作用,就是本地缓存。这些代理服务器也是服务器,那么它们也一样拥有本地存储能力。抖音视频文件存储的时候会基于文件内容生成一个哈希串,哈希串是一个文件的ID,根据它可以判断出文件的一致性。比如用户A刷到了一条视频,这个视频首先从根服务器传输到代理服务器,再从代理服务器传输到用户手里。那么用户B也刷到这条视频的时候,还需要重复上述过程吗,并不是。该视频已经缓存在代理服务器中,直接从代理服务器给用户B进行分发即可,无需浪费根服务器带宽。就好比汽车加油,大家不是亲自去中东抗油桶,而是在家附近的加油站加油,是这样一个分销的过程。

好说了这么多,我们言归正传,介绍一下CDN技术是如何对我们的个人网页进行优化的吧。网站是基于Github Page搭建的,Github服务器架设在美国,由于GFW的原因,Github服务器在国内访问并不是很顺畅,而且还不稳定(参考Google)。我们这里采用CDN,无需连接到Github服务器,而是连接到CDN的服务器,不用担心GFW的影响。下面就开始正式的部署教程

 

 

 

部署

我们选择的是Cloudflare这个CDN提供商,它的主要优势就是:对个人免费。首先,就是点击该链接:Cloudflare注册,进行注册,然后添加站点

方案选择免费方案

然后添加DNS记录,这里Cloudflare会自动扫描你的域名解析。此处我们无需进行更改,点击继续即可(如下面两幅图,腾讯云控制台只有一条www的解析记录,会被Cloudflare扫描出来并自动添加)。由于我的ryanyhliu.com已经添加,这里就用另外一个域名做示范。

这里选择左边的默认方法

然后来到下图

这里我们需要在域名服务提供商处,修改域名的DNS解析服务器,改为图中Cloudflare提供的DNS服务器。由于我使用的是腾讯云,这里就用腾讯云配置进行示范。切换到腾讯云域名服务页面,点击管理(下图红色箭头指向)

进入如下页面,然后接着按图操作,点击修改,按照Cloudflare中给出的DNS服务器域名进行修改,用rayne.ns.cloudflare.com | ridge.ns.cloudflare.com 替换 f1g1ns1.dnspod.net | f1g1ns2.dnspod.net, 之后回到Cloudflare页面,点击“完成,检查名称服务器”


之后,来到下图所示页面

把https打开,然后点击完成,即成功添加站点。稍后我们可以在Cloudflare管理页面进行更多设置。下图为Cloudflare站点管理页面

如图红框所示,还有很多很多的自定义配置可供选择,这里我就不展开细讲了,大家感兴趣的话可以自行搜索设置中的关键词去查询,修行在个人~(我实在是写吐了,不想写了,艹)