优化Jekyll博客访问慢的问题

2015-01-15 Brian Li 更多博文 » 博客 » GitHub »

原文链接 https://bigosg.github.io/jekyll/2015/01/15/optimization-of-jekyll-blog-access-slow-problem.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


博客运行一个多月了,各方面都很满意。唯独国内访问网站速度很慢。

多余但必须的废话

平时开着VPN,访问速度倒是不慢,在国内还是很有必要为自己搞一个稳定vpn的,至于原因你们都懂的,除非你肉神翻墙。那么问题来了,哪家vpn稳定且技术强?在这里推荐自己用了很长时间的vpn,不管是看YouTube,还是上google的developer.android.com速度都是刚刚的。 我的云梯{:target="_blank"},通过这个链接购买的用户,可以优惠10元哦。

优化资源文件

回归正题,那怎么优化国内访问速度问题呢? 其实国内访问速度慢,都是请求google相关资源文件导致的,请看下面的html片段:

{% highlight html %}

{% endhighlight %}

那么只要请求国内的资源文件就行了,或者你有个人空间,可以直接访问google的资源文件,复制并保存文件,接下来就是引用保存的文件就行了。在这里还是推荐第一种方式,使用现成的国内前端公共库www.freecdn.cn/{:target="_blank"},libs.useso.com/{:target="_blank"},这些公共库都是通过CDN服务优化过的。还有许多,在这里就不一一列举了,有兴趣的朋友可以看下这篇文章盘点国内网站常用的一些 CDN 公共库加速服务{:target="_blank"}。目前我使用的是360的公共库libs.useso.com{:target="_blank"},对我来说已经足够了。

360的公共库使用方式很简单,只需简单的把googleapis替换为useso,如下:

{% highlight html %}

{% endhighlight %}

优化统计分析

Jekyll模板默认使用的是googleAnaly网站分析,那么势必会加载google的analytics.js,这对于国内未翻墙的用户来说,加载肯定会耗很长的时间,甚至是加载失败,这也是博客访问慢的原因之一。 其实,可以复制并保存一份analytics.js文件,挂载在云存储空间上。 我的做法是屏蔽了googleAnaly分析,使用baidu统计来完成。 修改_config.yml文件,设置googleAnaly为false,增加baidu统计配置 :

{% highlight java %} googleAnaly: config: false id: UA-12345678-1

baiduTongji: config: true {% endhighlight %}

修改相对应的默认模板,googleAnaly不需要变动,增加baidu统计脚本: {% highlight html %}

{percent sign if site.googleAnaly.config percent sign} (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-12345678-1', 'auto');
        ga('send', 'pageview');
    </script>

{percent sign endif percent sign} {percent sign if site.baiduTongji.config percent sign} var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?304546b739a8551720f0c03581b01008"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); {percent sign endif percent sign} 注意:这里使用了percent sign英文单词来代替%,否则会当做判断实际执行。 {% endhighlight %}

最后测试了下,第一次访问请求资源文件保持在1-2秒之间,再次访问保持在400ms-600ms之间,比之前快了许多,可以说是秒开了。