捣鼓个人博客也有一段时间了,其间加了不少的插件,改来改去,最后打开也变得很慢了。问题主要有两个方面,一个是网络问题,因为托管在Github上,国内访问一直很慢,后来还是迁移到Coding上了,妥协了,给他加了个Hosted by Coding Pages
。另一方面则是加载的问题,由于多了许多插件,导致网页加载变慢,特别是在添加live2d之后。所以打算做些工作优化一下博客。
外部链接优化
主要是告诉搜索引擎爬虫无需抓取目标页,同时告诉搜索引擎无需将的当前页的Pagerank传递到目标页。Google推荐是用nofollow,nofollow是HTML元标签(meta)的content属性和链接标签(a)的rel属性的一个值,告诉机器(爬虫)无需追踪目标页,为了对抗blogspam(博客垃圾留言信息)。但是如果是通过sitemap直接提交该页面,爬虫还是会爬取,这里的nofollow只是当前页对目标页的一种态度,并不代表其他页对目标页的态度。
主要作用
- 防止不可信的内容,最常见的是博客上的垃圾留言与评论中为了获取外链的垃圾链接,为了防止页面指向一些拉圾页面和站点。
- 付费链接:为了防止付费链接影响Google的搜索结果排名,Google建议使用nofollow属性。
- 引导爬虫抓取有效的页面:避免爬虫抓取一些无意义的页面,影响爬虫抓取的效率。
其主要方法是给所有外部链接加上rel="external nofollow"
属性,对外部链接target=”_blank”
采用在新窗口种打开外部链接的方法。
安装
|
|
配置
编辑站点配置文件。
这里的exclude
下主要填你的域名,为豁免域名。
在主页不显示某类文章
修改主题目录下layout的index.swig文件:
在其中加入page的判断页面即可。
添加emoji支持
由于Hexo的默认Markdown语法不支持emoji表情,网上也有人替换了其Markdown渲染工具,但是又会引入新的Bug,所以就放弃了。后来看到有人照着Github的方式做了一个插件,在生成网页的时候将关键字替换成emoji的unicode字符,然后再利用JavaScript将字符替换成图片,这样即使图片加载失败还有字符fallback。其Repo在此。
安装
|
|
配置
编辑站点配置文件
其中,localEmojis
可以添加自己的本地表情。
Warning的处理
在安装完之后再执行hexo生成站点文件时,会有一个警告,主要内容如下:
这个意思是调用无回调的异步函数的方法已经被废弃,可能是使用了writeFile
函数。因此在其安装目录下寻找,后来在其index文件中找到了这个函数。修改方法如下:
|
|
找到带有writeFile
函数的一行,应该是这行:
将writeFile
改为writeFileSync
函数,即:
之后再运行,警告消失。
后加
现在听说作者已经修复了这个问题,所以不需要改了。
静态资源压缩
网页加载速度优化,主要通过压缩网页的静态资源如JS,Html,CSS,图片等文件来达到加速效果。网上现在主要有两种,一种是直接用Hexo的插件,Hexo-Neat,还有一种是使用通用的压缩工具Gulp。
这里主要使用Gulp。
安装
首先是安装Gulp插件:
然后安装gulp相关插件:
配置
添加一个gulpfile.js文件,在博客根目录下。
因为已经将hexo g生成站点文件的过程包含进去了,直接执行gulp即可。
但是不知道是不是Next版本更新的原因,导致js的压缩总是出问题,暂时先删掉了runSequence
中的minify-js
一项,之后再作讨论。
问题解决
原因找到了,是因为Gulp的uglify-js不支持ES6的语法,因此编译会出错。
解决方案:先使用babel编译。
安装
1npm install --save-dev gulp-babel babel-preset-es2015 babel-core修改gulpfile.js文件
在变量定义中添加一行:1var babel = require("gulp-babel");
然后在.pipe(uglify())
这一行前加一句:
问题解决。
替换谷歌字体库
众所周知,谷歌字体库访问通常情况都非常慢,于是决定使用国内的CND加速,但是之前360的字体库已经下架了,所以使用中科大的(虽然不下架应该也不会选择它 )。
修改方式:
编辑主题的配置文件:
找到fonts
的设置,在host:
后面填写
和host:
中间注意保持空格。
后加
中科大字体库已经挂了,谷歌字体库也经常抽风。于是采用国内CDN加速,参考于Showfom大神的一篇博客 。
修改谷歌字体库
将//fonts.googleapis.com
修改为国内cdn加速的库,和上面一样,找到fonts
的设置,在host:
后面填写
|
|
替换CDNJS 开源 JS 库
只需要替换 cdnjs.cloudflare.com
为 cdnjs.cat.net
即可。即:
在vendors
中的jquery:
后面添加自定义的地址:
|
|
修改Han字体的CDN
由于Han字体使用的CDN是cloudflare的,国内速度比较慢,因此替换其CDN:
在han:
后加:
|
|
修改其他的CDN
最终修改后的配置文件内容如下:
然后找出网页中所有其他的使用cloudflare加速的内容,替换掉。