51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Hexo博客性能优化(静态资源压缩 -- gulp)

引言 {#引言}

博客搭建这么久了发现并没有进行过优化,首页虽然打开速度勉强能够接受,但是 github 和 coding 提供的空间有限,是时候优化一下了。基本思路是采用 gulp 进行代码的压缩等。

分析 {#分析}

在浏览器输入url到页面打开,都做了些什么?

  • 浏览器里输入网址 https://zsyyblog.com
  • 浏览器查找域名对应的IP地址
    这一步包括DNS具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...
  • 浏览器向web服务器发送一个HTTP请求
  • 服务器的永久重定向响应(从https://zsyyblog.comhttps://www.zsyyblog.com)/)
    关于为什么要重定向。其中一个原因跟搜索引擎排名有关。如果一个页面有两个地址,就像 https://zsyyblog.comhttps://www.zsyyblog.com ,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。所以要把带www的和不带www的地址归到同一个网站排名下。还有一个原因是用不同的地址会造成缓存友好性变差。
  • 浏览器跟踪重定向地址,发起GET请求
  • 服务器"处理"请求,向浏览器发回一个HTML响应
  • 浏览器解析显示HTML
  • 浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)
  • 浏览器发送异步请求(ajax请求等)

从上面的过程可以看出,其实大部分过程我们是控制不了的,我们只能从浏览器端入手来找一些可以做的事情。那么,我们可以做些什么呢?

  • 少发送请求
    把要加载的js文件(css文件同理)合并成一个(尽量少)文件,则可以向服务器少发送请求,从而减少等待时间。
  • 压缩文件
    使用压缩之后的js、css、img文件,同样可以减少请求时间。
  • Css Sprite
    这是css的一项技术,将图片尽可能多的合并成一个图片文件,第一次使用的时候加载这张图片,然后浏览器会缓存下来,其他地方再使用的时候就不需要重新请求了。
  • js/css位置
    css引用建议放在head标签里面;js脚本建议放到body内容的最后,原因:等待js加载或者脚本有错误的时候不会影响html页面的展示。

操作步骤 {#操作步骤}

首先需要安装的 gulp 插件有:gulp-clean-cssgulp-uglifygulp-htmlmingulp-htmlclean。安装它们并将其加入到 package.json 的依赖中:

|-----------|-----------------------------------------------------------------------------| | 1 | npm i --save gulp-clean-css gulp-uglify gulp-htmlmin gulp-htmlclean |

当然,你的电脑上需要安装有 gulp,这里进行了全局安装:

|-----------|-----------------------| | 1 | npm i -g gulp |

然后在项目的根目录下新建 gulpfile.js 文件,里面一通配置,还是比较简单的,稍微熟悉点 gulp 的都没多大问题:

|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | var gulp = require('gulp'); var cleancss = require('gulp-clean-css'); var uglify = require('gulp-uglify'); var htmlmin = require('gulp-htmlmin'); var htmlclean = require('gulp-htmlclean'); /*压缩CSS*/ gulp.task('minify-css', function() { return gulp.src('./public/**/*.css') .pipe(cleancss()) .pipe(gulp.dest('./public')); }); /*压缩html文件*/ gulp.task('minify-html', function() { return gulp.src('./public/**/*.html') .pipe(htmlclean()) .pipe(htmlmin({ removeComments: true, minifyJS: true, minifyCSS: true, minifyURLs: true })) .pipe(gulp.dest('./public')); }); /*压缩JS文件*/ gulp.task('minify-js', function() { return gulp.src('./public/**/*.js') .pipe(uglify()) .pipe(gulp.dest('./public')); }); gulp.task('default', ['minify-html', 'minify-css', 'minify-js']); |

测试验证 {#测试验证}

大功告成。这样在执行生成命令和部署命令中间加一个 gulp 的命令即可:

|-----------------|------------------------------------| | 1 2 3 4 | hexo cl hexo g gulp hexo d |


赞(2)
未经允许不得转载:工具盒子 » Hexo博客性能优化(静态资源压缩 -- gulp)