基于GruntJS的前端性能优化

本文主要如何使用GruntJS来作简单的前端性能优化的自动化处理,我写了一个完整的例子放在Github上,可以参考一下。关于Yahoo的前端优化规则请参考:Best
Practices for Speeding Up Your Web Site

前端性能主要有图片的压缩,JS和CSS的合并、压缩,对所有静态文件的文件根据其内容加上hash,然后把CSS、HTML等文件中对所有的静态文件名替换成加上hash的新文件名。对所有的静态内容的路径上加上CDN的URL,最后将所有的静态文件上传到七牛CDN上去。下面我们按功能来说一下。

图片压缩

许多图片尤其是png图片有时候含有大量无意义的填充,增加图片的大小。我们可以通过contrib-imagemin对所有的图片进行压缩优化,从而减小图片的大小。根据我们使用经验来看,一般可以压缩5%到10%左右。

JS和CSS的文件的合并压缩

<p合并JS和CSS可以大量的减少HTTP请求,达到优化前端性能的目的。同时CSS和JS文件是静态文件,可以压缩到非常小的大小。GruntJS官方提供了contrib-concat,
contrib-cssmin, contrib-uglify等对应的插件来做对应的事情。我们这里因为要文件名的替换,使用了usemin插件,它会自动调用上述几个插件的,所以在我们的Gruntfile.js里并没有这3个插件的配置信息,而只是在task列表里调用了这几个插件。具体请参考:usemin

静态文件缓存处理

为了最大程度的提高浏览器的加载速度,最好的方法是让浏览器将所有的静态文件都缓存在客户端,这里的缓存是指expire和cache-control的max-age,而不是Last-Modified,因为使用Last-Modified 和 If-Modified-Since还是会发出请求的,只是没有更新就返回304状态码而max-age则是不会发出请求的,而是直接使用本地的缓存。使用缓存的面临的一个比较在的问题是如果文件有更新如果清理缓存或者如果让用户下载最新的文件。一种做法是静态文件加上版本号,例如 style.css?v=1.1。这种做法可以达到清除缓存的目的,但是维护起来相对麻烦,比较版本号没有办法怎么化,没有办法判断文件是否有更新。另外一种做法是对文件内容进行hash,然后将hash值加入到文件名中,例如style.abd1q2.css。这样就很容易进行自动化处理,我们这里使用了yeoman开发的filerev插件,它可以对文件内容进行MD5运算,然后将运算后的hash加到文件名中去,这样就很容易判断文件是否被修改,同时它可以和usemin进行完美的结合起来。

Hash处理后文件名的替换

对CSS和JS进行压缩合并以及对所有静态资源进行filerev处理后,原来HTML、CSS、JS等静态资源的引用文件名就需要替换成新的文件名了。例如HTML中对CSS和JS的引用,CSS中对图片的引用。我们使用了Yeoman开发的usemin进行替换。它的工作原理是,对需要处理的文件中的静态资源,在指定的文件夹查找经过filerev处理过的对应文件,如果找到则替换成相应的文件。例如,我们在代码中对CSS的引用代码如下:<link
type="text/css" href="style.css">,usemin会在指定的文件夹下面寻找类似style.abd1q2.css的文件,如果找到则会把我们的CSS引用代码自动替换成:<link type="text/css" href="style.abd1q2.css">。具体请参考:usemin

CDN路径的替换

开发过程中对所有静态资源的引用都是指向项目自己的domain。如果要使用CDN,则需要将所有静态资源的引用Domain指向CDN的domain。这里使用GruntJS插件cdn来对所有静态资源进行全局替换。

上传静态资源到CDN

当以上步骤完成后就可以将所有的静态文件上传到CDN了。七牛官方提供了NodeJS的SDK,但是貌似比较难用。我们例子里使用了第三方开发的NodeJS模块qn,非常简单,详见:
qn。我的做法是将图片和CSS/JS所在的目录分别遍历上传,对图片和CSS/JS分别加上不同的前缀。因为七牛是不提供在里面建文件夹的。详见cdn.js文件。

用法

  1. grunt build
  2. grunt upload

基于GruntJS的前端性能优化

时间: 2024-10-05 04:55:03

基于GruntJS的前端性能优化的相关文章

基于大数据的用户行为预测在前端性能优化上的应用

首先,我得说,这篇文章有点标题党了,其实内容并没有标题看起来那么高大上.其次,本文只是做一个技术方案可能性的探讨,并没有提供完善的解决方案,至多给了一个Demo供参考. 目的 如需转载,请注明转自:http://www.cnblogs.com/silenttiger/p/4929841.html 前端性能优化,我觉得最主要的目的就两个:1.提升页面加载速度:2.节约服务器资源. 这里特别提一下节约服务器资源,很多人在做前端性能优化的时候,往往只考虑前端性能的问题,而完全忽视前端的性能优化对后端服

web前端性能优化

前言:  在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒,99%的用户会关闭这个网页.也许这样讲,各位还不会有太多感触,接下来我列举一组数据:Google网站访问速度每慢400ms就导致用户搜索请 求下降0.59%;Amazon每增加100ms网站延迟将导致收入下降1%;雅虎如果有400ms延迟会导致流量下降5-9%.网站的加载速度严重影响了用户体验,也决

CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

目录 一.浏览器兼容 1.1.概要 1.2.浏览器内核 1.3.浏览器市场份额(Browser Market Share) 1.4.兼容的一般标准 1.5.CSS Reset 1.6.CSS Hack 1.6.1.条件注释法 1.6.2.样式内属性标记法 1.6.3.选择器前缀法 1.7.文档模式 (X-UA-Compatible) 1.8.javascript兼容 二.前端性能优化 2.1.概要 2.2.减少HTTP请求数量 2.2.1.图片地图 2.2.2.精灵图片(Sprite) 2.2.

2017前端性能优化清单

https://github.com/Findow-team/Blog/issues/11?utm_source=tuicool&utm_medium=referral 2017前端性能优化清单 你开始使用渐进启动了么?是不是已经使用过React和Angular中tree-shaking和code-splitting两个工具?有没有用过Brotli.Zofli和HPACK这几种压缩技术,或者OCSP协议(在线证书状态协议)?知不知道资源提醒,客户端提醒和CSS containment一类的技术?

移动H5前端性能优化指南(转载)

移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首屏加载3秒完成或使用Loading4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB5. Mobile侧因手机配置原因,除加载外渲染速度也是优化重点6. 基于第五点,要合理处理代码减少渲染损耗7. 基于第二.第五点,所有影响首屏加载和渲染的代码应在处理逻辑中后置8. 加载完成后用户交互使用时也需注意性能优化指

CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运行平台还存在差异.屏幕分辨率不一样,大小不一样,比例不一样.兼容性主要可以分类为: 1).CSS兼容2).JavaScript兼容3).HTML兼容 这三类也是前端的主要组成部分,都存在一定的兼容性问题,知己知彼,百战百胜,我们先了解浏览器的发动机—内核. 多年前我们一直为IE6兼容烦恼,为它没少加

移动H5前端性能优化指南[转]

移动H5前端性能优化指南 米随随2015.01.23 移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首屏加载3秒完成或使用Loading4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB5. Mobile侧因手机配置原因,除加载外渲染速度也是优化重点6. 基于第五点,要合理处理代码减少渲染损耗7. 基于第二.第五点,所有影响首屏加载和渲染的代码应在处理逻辑

移动HTML5前端性能优化指南

(点击看大图) 移动H5前端性能优化指南[托尼托尼研究所] 概述 1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首屏加载3秒完成或使用Loading4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB5. Mobile侧因手机配置原因,除加载外渲染速度也是优化重点6. 基于第五点,要合理处理代码减少渲染损耗7. 基于第二.第五点,所有影响首屏加载和渲染的代码应在处理逻辑中后置8. 加载完成

关于Yahoo十四条军规与前端性能优化

关于Yahoo十四条军规与前端性能优化 热度 4已有 223 次阅读2014-8-3 15:01 |个人分类:前端相关|系统分类:前端优化| 前端优化, yahoo, 性能优化 启用Gzip压缩.Gzip的思想就是把文件先在服务器端进行压缩,然后再传输.这样可以显著减少文件传输的大小.传输完毕后浏览器会 重新对压缩过的内容进行解压缩,并执行.目前的浏览器都能“良好”地支持 gzip.不仅浏览器可以识别,而且各大“爬虫”也同样可以识别,各位seoer可以放下心了.而且gzip的压缩比例非常大,一般