为什么要压缩页面静态资源

对于个人博客来说,优化页面的访问速度是很有必要的,如果打开你的个人站点,加载个首页就要十几秒,页面长时间处于空白状态,想必没什么人能够忍受得了吧。我个人觉得,如果能把页面的加载时间控制在三四秒内,就很不错了。

那么怎么提高hexo这个静态博客的页面加载速度呢?可以从以下的几个方面去入手:

  1. 将js文件尽可能放置到body的闭合标签之前,因为在加载或者引入js文件时是阻塞式的,如果我们在页面的最开始就引入这些js文件,而这些文件又比较大,会造成页面在渲染时长时间处于白屏状态。
  2. 尽量避免去引用访问速度非常低下的cdn或者图片,可以改用访问速度更快的cdn,或者将难以迅速加载的图片保存到自己的站点目录下,以免在加载图片时耗费了大量的时间,最后还加载不出来。
  3. 对页面的静态资源进行压缩,包括css、js和html等文件。我们自己添加的css和js文件为了可读性,往往会有很多换行和空格,这些对于浏览器来说并没什么卵用,甚至还会降低渲染页面的速度。至于html文件,由于Markdown转成html的bug,会导致页面存在大量的空白,如果你查看下页面的源代码,就会发现这些大量的空白符,十分难看。这也会造成页面渲染的性能问题。

hexo的压缩静态资源插件

网上有很多相关的博文,常规的做法是使用gulp来进行压缩,gulpNode.js下的自动构建工具,通过一列的task执行步骤进行自动流程化处理。

使用这种方法会比较麻烦,每次压缩时还需要输入额外的命令,比较繁琐,个人不是很喜欢,有兴趣的可以去自己了解下相关的东西。这篇教程里很多详细的说明,里边有说到gulp的使用,绝对的精品文章。

这里我选择的是由rozbo大佬开发的hexo-neat压缩插件,配置简单,无需额外命令,你只要使用原本的调试三连或者部署三连就可以自动帮你完成静态资源的压缩!

如何使用hexo-neat

在站点根目录下安装hexo-neat

npm install hexo-neat --save

为站点配置文件添加相关配置

下边是我自己站点的相关配置,直接添加到站点配置文件_config.yml的末尾就可以。可以安装自己的需求去自定义配置,不过有些注意事项,可以参考我后文的踩坑记录。

# hexo-neat
# 博文压缩
neat_enable: true
# 压缩html
neat_html:enable: trueexclude:
# 压缩css
neat_css:enable: trueexclude:- '**/*.min.css'
# 压缩js
neat_js:enable: truemangle: trueoutput:compress:exclude:- '**/*.min.js'- '**/jquery.fancybox.pack.js'- '**/index.js'  

hexo-neat插件踩坑记录

由于在使用hexo-neat插件时,可以在命令窗口中看到各个文件的压缩率,于是我就开始捣鼓跳过哪些文件可以让效率更高。在鼓捣了一段时间之后,记录下使用该插件的一些注意事项,避免日后重蹈覆辙,也希望能对各位看官有所帮助。

跳过压缩文件的正确配置方式

如果按照官方插件的文档说明来配置exclude,你会发现完全不起作用。这是因为配置的文件路径不对,压缩时找不到你配置的文件,自然也就无法跳过了。你需要给这些文件指定正确的路径,万能的配置方式如下:

neat_css:enable: trueexclude:- '**/*.min.css'

压缩html时不要跳过.md文件

.md文件就是我们写文章时的markdown文件,如果跳过压缩.md文件,而你又刚好在文章中使用到了NexT自带的tab标签,那么当hexo在生成静态页面时就会发生解析错误。这会导致使用到了tab标签的页面生成失败而无法访问。

当初为了找到这个原因花了我两个晚上的时间,简直是夜不能寐。

压缩html时不要跳过.swig文件

.swig文件是模板引擎文件,简单的说hexo可以通过这些文件来生成对应的页面。如果跳过这些文件,那么你将会发现,你的所有页面完全没有起到压缩的效果,页面源代码里依然存在着一大堆空白。

参考链接

  1. GitHub项目地址
  2. hexo博客压缩优化
  3. Hexo-Neat介绍

转载于:https://www.cnblogs.com/yulinlewis/p/9595348.html

Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源相关推荐

  1. Hexo文件压缩:使用hexo-neat插件压缩页面静态资源

    目录 为什么要压缩页面静态资源 hexo的压缩静态资源插件 如何使用hexo-neat 在站点根目录下安装hexo-neat 为站点配置文件添加相关配置 hexo-neat插件踩坑记录 跳过压缩文件的 ...

  2. Hexo瞎折腾系列(8) - 添加评论系统

    前言 Hexo的NexT主题本身就集成了一些评论系统,多说啊之类的已经关闭服务的略过不提,目前比较多人用的有畅言.来必力livere.Gitment.Gitalk.Disqus等. 我刚用的评论系统的 ...

  3. Hexo瞎折腾系列(6) - 将博客同时部署到Github和Coding

    前言 由于本人只是将Hexo博客同时部署到 Github 和 Coding.net ,所以这里只介绍怎么同时部署到这两个网站的pages. 之所以选择这两个网站,是因为国外用户可以访问 Github, ...

  4. 优化Hexo性能,使用hexo-neat插件压缩页面,大幅度提升页面性能和响应速度

    写在前面的话 如果你还没有搭建Hexo博客成功的话,可以看看我写的这篇博客<手把手教你使用GitHub + Hexo搭建属于自己的个人博客>. 如果你搭建成功的话,可以看看关于这两篇博客& ...

  5. coreelec 下载app_DY的瞎折腾系列 篇十三:N1多媒体系统CoreELEC升级指南

    DY的瞎折腾系列 篇十三:N1多媒体系统CoreELEC升级指南 2019-04-15 18:31:07 70点赞 535收藏 292评论 感谢大家一直对N1系列的支持,由于CoreELEC刷入N1后 ...

  6. android 播放器 遥控器,DY的瞎折腾系列 篇八:N1多媒体播放器  手机遥控器

    DY的瞎折腾系列 篇八:N1多媒体播放器  手机遥控器 2019-03-29 19:00:28 21点赞 173收藏 53评论 非常感谢大家支持,本篇主要介绍一下CoreELEC系统的手机浏览器当遥控 ...

  7. coreelec 下载app_DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南...

    DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南 2019-04-26 15:28:57 64点赞 427收藏 117评论 你是AMD Yes党?还是intel和NVIDIA的 ...

  8. Hexo博客系列(三)-将Hexo v3.x个人博客发布到GitLab Pages

    [原文链接]:https://www.tecchen.xyz/blog-hexo-env-03.html 我的个人博客:https://www.tecchen.xyz,博文同步发布到博客园. 由于精力 ...

  9. 红米5+plus+信号显示无服务器,我的瞎折腾,红米AX5路由器MESH组网测试

    我的瞎折腾,红米AX5路由器MESH组网测试 2020-08-23 10:42:04 77点赞 443收藏 110评论 创作立场声明:路由器自己买的,我这不是客观测评,纯属主观瞎BB,我写的就是我使用 ...

最新文章

  1. Dubbo 稳定性案例:Nacos 注册中心可用性问题复盘
  2. 推荐 10 个实用型的热门开源项目,开发效率又能提升了!
  3. VTK:可视化之LabelContours
  4. [小明学Shader]14.热扭曲效果
  5. matlab运算速度与cpu的关系,请教编程语言和运算速度的关系
  6. 在Java中使用Google的协议缓冲区
  7. android实现手机拍照以及图片预览功能_手机系统将有A/B分区?Android 11这些变化你关注过吗...
  8. 工作中,我们经常用到哪些SQL语句呢?
  9. PHP钩子的简单介绍
  10. python函数递归 字符串反转
  11. FastDFS服务器搭建
  12. 马斯克:我是Rust粉丝,但我选择C
  13. XLM-RoBERTa: 一种多语言预训练模型
  14. python 倒计时库_python实现倒计时小工具
  15. EasyAR WebAR 开发微信小程序记录
  16. ADAMS并联机器人动力学仿真【附源文件】
  17. 【Unity3D基础2-5】Unity3D本地坐标系与世界坐标系
  18. 百度不收录网站的原因
  19. linux中bash是什么命令,linux中bash是什么意思?
  20. # 互动媒体期末作业——P5.js“画板”

热门文章

  1. java线程同步的死锁_Java基础之线程5-线程同步死锁
  2. mybatis传set参数
  3. JMS学习(2):ActiveMQ简单介绍以及安装
  4. 通过java使用ssh访问远程Linux
  5. 采用光线跟踪绘制场景 c++_虚拟演播室的跟踪系统以及色键器应要选择什么型号...
  6. memcpy函数_如何理解c语言中的回调函数
  7. JNI教程与技术手册
  8. ubuntu14.0.4下安装pycharm
  9. 聊聊高并发(三十三)Java内存模型那些事(一)从一致性(Consistency)的角度理解Java内存模型
  10. 在Java项目中整合Scala