起因

之前一直觉得网页加载速度其实也还行,就是有两个图标加载的非常慢,经常是网页都出来了,那两个图标还是个方框,要等好久才出来。终于,好好研究了一番,发现那个图标是fontawesome里的,然后字体文件储存在github上,所以加载的比较慢。

那么解决的思路就是把字体文件放在连接较快的某个cdn或者服务器上

一波三折

plan A

利用七牛或者又拍云的cdn。然而,七牛之前用的欠费了,又拍云直接把好给我封了,登录都登不上。那既然七牛好歹还让我登录上了,就选七牛吧。

然而,把那欠的30多块钱充上之后,发现他只能提供一个临时的30的域名。我TMD,我要是域名备案了就不找你们了。30天过后就自动删库了。并且那个30天的临时域名还不支持https。

所以,放弃。

plan B

用我的搬瓦工的服务器,虽然在国外,但是看了一下速度,还可以。

然而,在配置之后,发现github的hexo博客是https访问的,但是我搬瓦工那个网站域名没有ssl证书。chrome直接就禁止了http和https的混用。遂字体无法加载。

所以,放弃

plan C

寻找有没有那种字体cdn库。虽然bootcdn上有fontawesome这个库,但是字体文件和我本地的不一样。我也没继续试。还有其他的js,css也是这样,有些我用的,他没有。可能是主题作者自己修改了吧

所以,放弃。

plan D

用SAE。因为我之前用过SAE,他会给一个域名,而且支持https。

先是创建了一个php应用,把文件存了上去,然后调用,发现出现了无法跨域调用。在SAE设置了允许跨域(设置允许跨域header头)。(刚刚去找这个网页,在SAE的官网上就然没有,官网的文档和这个文档不一样,官网也没链接,搞不懂为什么这么弄。或者是我没找到?)但是设置之后依然无法跨域调用。于是工单询问。在告知客服我的需求后,他告诉我可以使用云储存SCS,支持https并且流量费用更低。还说我设置的跨域头文件是正确的。啧,那我就不明白了,算了,不想了。就用那个SCS吧。

经过一番折腾,终于成功了。

操作过程

上传静态文件到SCS

上传之后要把ACL的匿名读权限打开。吐槽一下,竟然不能一下将同一文件夹下的所有文件全部设置ACL权限,也不能多选设置,只能一个一个文件的设置。问了客服,他说暂时没有这个功能,可以写一个脚本来实现(http://document.applinzi.com/scs/php-sdk.html),(好奇+1,他这里发给我的也是这个document的网站,那为什么官网主页没有这个连接嘞。)。我写个锤子的脚本,也没几个文件,还要现学,还不如一个一个设置呢。

更改主题中的引用链接

我使用的是jacman,作者两年没更新了,也没有出一个cdn的选项。好像next主题有设置cdn的选项,可以直接在配置文件里改。唉,我也不想换next,那个太花里胡哨了。

于是,就用chrome开发者调试,看整个网页哪个静态文件加载慢,就替换掉。结果是,基本全替换掉了。以下是替换的部分

字体文件

N:\blog\themes\jacman\source\css\_base\font.styl

第3行

return '../font/' + filename

JS文件

N:\blog\themes\jacman\layout\_partial\after_footer.ejs

1-4行

<script src="<%- config.root %>js/jquery-2.0.3.min.js"></script>
<script src="<%- config.root %>js/jquery.imagesloaded.min.js"></script>
<script src="<%- config.root %>js/gallery.js"></script>
<script src="<%- config.root %>js/jquery.qrcode-0.12.0.min.js"></script>

215-216行

<link rel="stylesheet" href="<%- config.root %>fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="<%- config.root %>fancybox/jquery.fancybox.pack.js"></script>

N:\blog\themes\jacman\layout\_partial\totop.ejs

第3行

这个png只有几kb大小,但是在某次测试中花了十几秒加载,索性也换到SAE上

<a title="<%= __('totop')%>"><img src="<%- config.root %>img/scrollup.png"/></a>

第5行

<script src="<%- config.root %>js/totop.js"></script>

logo图片

N:\blog\themes\jacman\layout\_partial\header.ejs

第18行

<a href="<%- config.root %>"><img src="<%- config.root %><%= theme.imglogo.src %>" alt="<%= config.title %>" title="<%= config.title %>"/></a>

N:\blog\themes\jacman\source\css\_partial\footer.ejs

第34行

background no-repeat url("../"+author-img) left top 

总结

更换完之后加载速度由原来的好的时候六七八秒,不好的时候十秒到二十秒,并且图标加载缓慢到现在可以1-2秒就能加载完,虽然图标依然会比文字晚出现,但速度已经可以接受了

吐槽七牛,妈的,早知道老子不充钱,不还那个欠款了,辜负我的期望。32块钱啊。从此你我两不相欠

夸一夸SAE,刚刚看那个价格,发现SCS储存有免费的额度,1GB的储存空间,300MB的下载流量(哇,又看了一眼,每天300MB流量)。那我这些小文件根本就用不完免费额度嘛,况且我的博客根本没人看,只有我自己整天看来看去,自己嫌弃他加载速度慢。舒服了,可以白嫖了。如果可以重来,我会把那32块钱充到SAE上。以后可以考虑在SAE上部署一些程序啥的。便宜还好用。

对SAE有一点不满意就是他的储存空间不支持cdn。我看腾讯的那个好像支持。但是,腾讯又需要有备案的域名。那算了,还是SAE更胜一筹

hexo利用SAE提高网页打开速度的更多相关文章

  1. 提高网站打开速度的7大秘籍---依据Yslow工具的优化【转】

    很多站长使用虚拟主机来做网站,网页内容一旦很多,网站打开速度就会特别慢,如果说服务器.带宽.CDN这类硬指标我们没有经济实力去做,不妨通过网页代码优化的方式来提高速度,卢松松总结了一些可行性的方法. ...

  2. js实现网页图片延时加载的原理和代码 提高网站打开速度

    有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对 ...

  3. 帝国cms提高网站网页打开速度的手段

    1.减少页面HTTP请求数量 2.使用CDN(Content Delivery Network)网络加速 3.添加文件过期或缓存头 4.服务器开启gzip压缩 5.css格式定义放置在文件头部 6.J ...

  4. CSS 常用样式 提高网页编写速度

    *{margin:0px;padding:0px;}/*内外边距初始化*/html, body, div, h1, h2, h3, h4, h5, h6, p, span, img, input, t ...

  5. 网页打开速度优化——HTTP请求头及响应头

    no-cache:不缓存过期的资源 no-store:不缓存 最近看了<图解HTTP>这本书,书上讲到了这两者的区别: no-cache从字面意义上很容易误解为不缓存,但是no-cache ...

  6. Google Font字体本地化使用提高网站访问速度

    Google Web font在国内经常不稳定,速度在国内延迟也很高,而引发网页打开速度慢. 一.常见的字体格式介绍 不同的浏览器对字体格式支持是不一致的,常见的如下: 1.TureTpe(.ttf) ...

  7. Web前端性能优化总结——如何提高网页加载速度

    一.提高网页加载速度的必要性 国际知名的一组来自Jupiter Research的数据显示:购物者在访问网站过程中的不满会导致销售损失和品牌受损,其中 77%的人将不再访问网站 ,62%的人不再从该网 ...

  8. 利用curl并发来提高页面访问速度

    在我们平时的程序中难免出现同时访问几个接口的情况,平时我们用curl进行访问的时候,一般都是单个.顺序访问,假如有3个接口,每个接口耗时500毫 秒那么我们三个接口就要花费1500毫秒了,这个问题太头 ...

  9. 对WEB标准以及W3C的理解与认识 - 提高网页加载速度

    在写代码的时候应该注意: 1.标签闭合 2.标签小写 3.不能随意嵌套 提高被搜索引擎搜到几率: mate中的name变量[其中keywords和description尤其重要] Meta name= ...

随机推荐

  1. DApp是什么,DApp是必然趋势

    DApp是什么,DApp是必然趋势  https://www.jianshu.com/p/dfe3098de0de Thehrdertheluck关注 12018.04.23 11:54:00字数 2 ...

  2. csu 1984: LXX的能力值

    1984: LXX的能力值 Submit Page   Summary   Time Limit: 3 Sec     Memory Limit: 128 Mb     Submitted: 17   ...

  3. LRU缓存实现

    LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高” 在java中可以采用Linke ...

  4. 028 SSM综合练习04--数据后台管理系统--订单相关操作

    1.订单表及其关联表的关系分析 2.数据库表对应实体类 (1)Orders.java package lucky.domain; import lucky.utils.DateUtils; impor ...

  5. 在DCEF3中使用较少的dll文件?

    您可以使用以下属性: GlobalCEFApp.CheckCEFFiles:设置为FALSE以跳过所有CEF二进制文件检查功能. GlobalCEFApp.LocalesRequired:一个逗号分隔 ...

  6. python_协程

    协程 问题一: 生成器与函数的区别?生成器分阶段的返回多个值,相当于有多个出口(结果): yield ''' yield # 中断.返回函数值 1.只能在函数中使用 2.会暂停函数执行并且返回表达式结 ...

  7. 【题解】Luogu P5339 [TJOI2019]唱、跳、rap和篮球

    原题传送门 这题zsy写的是\(O(n^2)\),还有NTT\(O(n^2\log n)\)的做法.我的是暴力,\(O(\frac{a b n}{4})\),足够通过 考虑设\(f(i)\)表示序列中 ...

  8. linux 释放系统内存命令

    1.sync 因为系统在操作的过程当中,会把你的操作到的文件资料先保存到buffer中去,因为怕你在操作的过程中因为断电等原因遗失数据,所以在你操作过程中会把文件资料先缓存.所以我们执行sync命令, ...

  9. 分页工具类PageResult

    1.工具类 public class PageResult implements Serializable { private Long total;//总记录数 private List rows; ...

  10. 自学Python编程的第五天(希望有IT大牛帮我看最下面的代码)----------来自苦逼的转行人

    2019-09-15-15:40:24 今天没有学知识,是一个一周总结,把这一周学的知识总结一遍,然后把做过的练习题再做一遍 看是否还会有再出现同样的错误,而且还可以知道有哪些知识点没有掌握好,可以把 ...