起因

之前一直觉得网页加载速度其实也还行,就是有两个图标加载的非常慢,经常是网页都出来了,那两个图标还是个方框,要等好久才出来。终于,好好研究了一番,发现那个图标是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. excel 去掉 空单元格

    Excel 2003 选中这一列,定位(CTRL+G)--定位条件--空值--确定--右键--删除. 1. 然后进行全选已输入的内容,可以使用鼠标拖动已输入的内容,也可以使用快捷键全选内容,按住ctr ...

  2. 【Docker学习之四】Docker自定义容器镜像

    环境 docker-ce-19.03.1-3.el7.x86_64 centos 7 一.使用已有容器创建镜像-docker commit1.查看本地已有镜像 [root@node105 ~]# do ...

  3. 前端传实体数组;后台list实体接收参数

    前端页面: $.ajax({ url: url, data: JSON.stringify(data), dataType: "json", contentType: " ...

  4. (转)IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)

    背景:idea安装插件,学习使用阿里巴巴开发插件. 在线和离线的安装方式. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines) ...

  5. RWMutex:共享/专有的递归互斥锁

    具有共享/独占访问权限,且具有升级/降级功能的互斥锁 介绍 我的目标是创建可以充当读/写锁定机制的对象.任何线程都可以锁定它以进行读取,但是只有一个线程可以锁定它以进行写入.在写入线程释放它之前,所有 ...

  6. python内存机制与垃圾回收、调优手段

    目录 一.python的内存机制 二.python的垃圾回收 1. 引用计数 1.1 原理: 1.2 优缺点: 1.4 两种情况: 2. 标记清除 2.1 原理: 2.2 优缺点: 3. 分代回收 3 ...

  7. C#获取文件夹下的所有文件的方法

    目录 #基础知识 #只获取目录下一级的文件夹与文件 # 递归地输出当前运行程序所在的磁盘下的所有文件名和子目录名 正文   #基础知识 1.获得当前运行程序的路径 1 string rootPath ...

  8. 遍历切片slice,结构体struct,映射map,interface{}的属性和值

    1 前言 说明:interface{}必须是前三者类型 2 代码 /** * @Author: FB * @Description: * @File: testOutput.go * @Version ...

  9. python二维数组切片

    python中list切片的使用非常简洁.但是list不支持二维数组.仔细研究了一下发现,因为list不是像nampy数组那么规范.list非常灵活.所以没办法进行切片操作. 后来想了两个办法来解决: ...

  10. 英语Petrolaeum原油

    Petrolaeum (英语单词) Petrolaeum是一个英语单词,名词,翻译为石油. 中文名:石油 外文名:petrolaeum,petroleum 目录 1 含义 2 例句 含义 petrol ...