hexo利用SAE提高网页打开速度
起因
之前一直觉得网页加载速度其实也还行,就是有两个图标加载的非常慢,经常是网页都出来了,那两个图标还是个方框,要等好久才出来。终于,好好研究了一番,发现那个图标是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提高网页打开速度的更多相关文章
- 提高网站打开速度的7大秘籍---依据Yslow工具的优化【转】
很多站长使用虚拟主机来做网站,网页内容一旦很多,网站打开速度就会特别慢,如果说服务器.带宽.CDN这类硬指标我们没有经济实力去做,不妨通过网页代码优化的方式来提高速度,卢松松总结了一些可行性的方法. ...
- js实现网页图片延时加载的原理和代码 提高网站打开速度
有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对 ...
- 帝国cms提高网站网页打开速度的手段
1.减少页面HTTP请求数量 2.使用CDN(Content Delivery Network)网络加速 3.添加文件过期或缓存头 4.服务器开启gzip压缩 5.css格式定义放置在文件头部 6.J ...
- CSS 常用样式 提高网页编写速度
*{margin:0px;padding:0px;}/*内外边距初始化*/html, body, div, h1, h2, h3, h4, h5, h6, p, span, img, input, t ...
- 网页打开速度优化——HTTP请求头及响应头
no-cache:不缓存过期的资源 no-store:不缓存 最近看了<图解HTTP>这本书,书上讲到了这两者的区别: no-cache从字面意义上很容易误解为不缓存,但是no-cache ...
- Google Font字体本地化使用提高网站访问速度
Google Web font在国内经常不稳定,速度在国内延迟也很高,而引发网页打开速度慢. 一.常见的字体格式介绍 不同的浏览器对字体格式支持是不一致的,常见的如下: 1.TureTpe(.ttf) ...
- Web前端性能优化总结——如何提高网页加载速度
一.提高网页加载速度的必要性 国际知名的一组来自Jupiter Research的数据显示:购物者在访问网站过程中的不满会导致销售损失和品牌受损,其中 77%的人将不再访问网站 ,62%的人不再从该网 ...
- 利用curl并发来提高页面访问速度
在我们平时的程序中难免出现同时访问几个接口的情况,平时我们用curl进行访问的时候,一般都是单个.顺序访问,假如有3个接口,每个接口耗时500毫 秒那么我们三个接口就要花费1500毫秒了,这个问题太头 ...
- 对WEB标准以及W3C的理解与认识 - 提高网页加载速度
在写代码的时候应该注意: 1.标签闭合 2.标签小写 3.不能随意嵌套 提高被搜索引擎搜到几率: mate中的name变量[其中keywords和description尤其重要] Meta name= ...
随机推荐
- IIS部署FLASK网站
在 Windows 平台部署基于 Python 的网站是一件非常折腾的事情,Linux/Unix 平台下有很多选择,本文记录了 Flask 部署到 IIS 的主要步骤,希望对你有所帮助. 涉及工具和平 ...
- c#实现定时任务(Timer)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 待补充 MySQL必知必会第29章--------数据库维护
备份数据 由于MySQL数据库是基于磁盘的文件,普通的备份系统和里程就能备份MySQL的数据.但是,由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是生效.
- 机器学习之挖掘melb_data.csv数据
mel_data.csv是关于melb地区房屋的数据 mel_data.csv import pandas as pd melbourne_file_path = "E:\data\Melb ...
- css3网站响应式写法
css3响应式写法因为media不支持ie9以下的浏览器 所有要加个判断<pre> <!-- 全部通用的 --><link rel="stylesheet&qu ...
- Ubuntu16.04环境下的硬盘挂载
需求:在Ubuntu16.04系统下,挂载一个新的硬盘 第一步:查看目前已经存在的分区的状态 命令:df -l 如上图所示,并未看到要挂载的硬盘(sda)的状态. 第二步:查看计算机硬盘的状态(包括格 ...
- js实现html表格<td>标签中带换行的文本显示出换行效果
遇见问题 如下内容中我写了几行,但是表格中并未按行显示,换行符反而变成了空格,于是想自己转换下 思考问题 1.可以看到表格的内容是后端传来的数据,于是想直接在后端转换下,把换行符替换成<br&g ...
- How long does it take to make a context switch?
FROM: http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html That's a interesti ...
- 在O(1)的时间内删除链表节点
题目: 在O(1)的时间内删除链表节点.给定链表的头指针和待删除的节点指针,定义一个函数在O(1)的时间内删除该节点. 剑指offer的思路,顿时觉得极妙.删除节点node1,先把其下一个节点node ...
- java之aop
1.AOP:aspect orientied programming 面向切面编程.就是横向编程. 2.面向切面编程是在不改变原有代码的情况下增加新的功能. 3.在spring中面向切面编程有两种应用 ...