起因

之前一直觉得网页加载速度其实也还行,就是有两个图标加载的非常慢,经常是网页都出来了,那两个图标还是个方框,要等好久才出来。终于,好好研究了一番,发现那个图标是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. SQL Server 使用文件组备份降低备份文件占用的存储空间

    对于DBA来说,备份和刷新简历是最重要的两项工作,如果发生故障后,发现备份也不可用,那么刷新简历的重要性就显现出来,哇咔咔!当然备份是DBA最重要的事情(没有之一),在有条件的情况下,我们应该在多个服 ...

  2. Python实现双链表

    双向链表(Double_linked_list)也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结 ...

  3. Connection to 天mysql failed. [08001] Could not create connection to database server. Attempted ,报错处理方法

    https://blog.csdn.net/myzh215219/article/details/90314345 点击图上的DRIVER,然后点击GO TO DRIVER,之后更改合适的驱动. 我的 ...

  4. cookielib模块 for python3

    python2 可以直接安装cookielib模块 而py3却不能安装 故需要安装http模块 举例子: from http import cookiejar cookie = cookiejar.C ...

  5. Java中是使用增强for的null问题

    在使用List和Map等集合时,我们经常会使用增强for来进行遍历.但是这里面会存在一些问题.比如当你进行数据库查询是,得到的返回结果是List集合时,如果没有查询到符合要求的数据时List集合时nu ...

  6. Mac Mini(late 2014) 添加NVMe固态组Fusion Drive

    我买的是Mac Mini(late 2014)中配,内置5400转1T机械硬盘,该配置即使到了2019年安装macOS Mojave系统依旧是够用的,但硬盘严重拖累了运行的速度.之前考虑到更换内置sa ...

  7. 在Go中简单实现HTTP服务中间件

    通常一个简单http服务框架,就是注册一堆路由,然后根据路由调用不同的逻辑去处理. 但实际上可能有一些统一的处理对几乎所有的路由都涉及到,比如日志,比如权限等等. 那么这个时候搞一个中间做预处理,是一 ...

  8. django 无限层级的评论

    一.摘要 拓展 django 官方的评论库,为评论提供无限层级的支持. 二.demo演示 访问链接: https://github.com/zmrenwu/django-mptt-comments 下 ...

  9. AutoCAD ObjectARX 二次开发(2020版)--3,执行ARX文件--

    上一节中我们在initApp()函数中,将helloWorld()函数注册给了CAD主程序,注册指令的字符串为“Hello”. void initApp() { acedRegCmds->add ...

  10. webpack集成vue单文件模式的很多坑(研究了1个星期)

    1.一开始不知道局部安装webpack后,如何调用webpack. 后来看说明文档(webpack中文网)才知道,有个npx可以启动本地安装的webpack. 我估计:全局安装webpack,全局的w ...