🚀网站优化记录.
Why?
Why do this?
这网站有太多需要简化的东西了,很多样式是
直接引入的css和js
巨耗费渲染性能和时间(可以感觉出来加载这网站挺费劲的)
概览
对于 css 的所有修改,全部整合进
mine.styl
编译时就已经做好美化,额外资源负载几乎降为 0
注入到
index.styl
末尾.
js 的美化,全部整合到
utils.js
请求数加 0,加载策略优化,时间降低; Weidows对象直接全局加载生效且不被GC.
把 js 代码全堆在最后,暴露
Weidows.re()
供 pjax 调用.
pug 的修改降低为 3 处,方便升级换代,都在此目录下:
themes\butterfly\layout\includes\
additional-js.pug
- 末尾追加樱花特效footer.pug
- 页脚标签+改注脚样式third-party\pjax.pug
- 调用 Weidows.re(),适配 pjax 刷新
契合
优化 css
以往的 css 是直接引入的文件,在客户端加载时还是会耗费一些不菲时间加载+渲染出来
优化思路就是把 css 变成
styl
,使之在编译生成 HTML 文件时就把样式改了,节省客户端耗费.
如下:
新建一个名为
mine.styl
的文件.原 css 文件就是
mine.css
,用css2styl
转换为 styl 格式,粘贴到mine.styl
注意这个网站转换成的 styl 有很多 bug(包括缩进和括号,需要人工检验)
包括原先
source/css/_global/function.styl
之类的内添加或修改的样式,也可以转入 mine.styl.然后在
index.styl
中引入:- 在末尾加上
//mine
@import '_mine/mine.styl'
用
hexo server
测试一下,应该没问题~这样 css 优化就完成了
优化 js
跟 css 一样,我原先也是直接一个
mine.js
引入的虽然没啥问题,但是会导致页面第二次加载渲染,而且多了一个请求数
于是,我想直接把它淦进
main.js
中!- 操作不复杂,直接复制
mine.js
内容,粘贴进main.js
最后 - 注意不是最末尾
// 粘贴到这里
refreshFn();
unRefreshFn();
})- 操作不复杂,直接复制
再次魔改
因为某些美化函数会被 pjax 功能搞失效,直接把函数放进 main.js 的话,pjax 无法再次使用
所以我把美化 js 打包并弄进
butterfly/layout/head.pug
中,在页面编译时就会被添加到<head>
内,加载时间和请求数不增加!现在,加载逻辑是: js 美化代码在 HTML 文件的 head 中,然后在 main.js 最后写一句调用命令; 在页面用了 pjax 加载时,pjax.pug 中的重渲染函数会被调用.