* 请说出静态资源请求的优化措施?是否用过“雪碧图”和iconfont?

减少HTTP请求

CSS/JS 合并打包
小图标等用iconfont代替:作为单个DOM节点使用,可以设置大小、颜色等,非常便利。个人建议前端来维护这个字体包,每次有新增的图标,让设计师给我们对应的svg文件即可,前端自己去 icomoon.io/ 这个网站,导入原来的selection.json文件,增量生成新的css,无比方便。之前,我一直以为iconfont只能是单色的呢,其实也可以是多色的,svg里面多一些path而已,设计师会搞定的。生成字体后,前端正常引用即可(引用的时候,多色字体会多一些标签)
使用base64格式的图片:有些小图片,可能色彩比较复杂,这个时候再用iconfont就有点不合适了,此时可以将其转化为base64格式(不能缓存),直接嵌在src中,比如webpack的url-loader设置limit参数即可

减少静态资源的体积
压缩静态资源:合并打包的js、css文件体积一般会比较大,一些图片也会比较大,这个时候必须要压缩处理。前后端分离项目,不论是gulp还是webpack,都有相应的工具包。针对个别图片,有时候也可以单独拿出来处理,我个人经常使用这个网站 tinypng.com/ 在线压缩
编写高效率的CSS:涉及到代码层面的优化比较多也比较细,不同水平的技术人员写出来的肯定不一样,这里不做进一步的分析。但是为什么要把CSS拿出来说一说呢?因为现在项目里面基本上都在使用CSS预处理器,Less、SaaS、Stylus等等,这导致了某些初级前端的滥用:嵌套5、6层,甚者能达到7、8层,吓死个人!嵌套这么深,影响浏览器查找选择器的速度不说,这也一定程度上产出了很多冗余的字节,这个要改、要提醒,一般建议嵌套3层即可。关于编写高效率的CSS,推荐一篇文章,《Writing efficient CSS selectors》
服务端开启gzip压缩:大招,最近刚知晓,真是太牛逼了,一般的css、js文件能压缩60、70%,当然,这个比率可以设定的。前后端分离,如果前端部署用node、express作服务器的话,使用中间件compression即可开启gzip压缩:

// server.js
var express = require(‘express’);
var compress = require(‘compression’);
var app = express();
app.use(compress());复制代码
对于一般的SPA项目,如果node服务器的作用比较简单,比如只是做个接口转发之类的,很多人更倾向用Nginx作服务器,Nginx在转发接口、压缩、缓存等功能上更胜一筹。不过,大部分前端对Nginx应该陌生一些,为了实践技术,用熟悉的node即可,真正的项目部署,有专业的实施人员来搞

使用缓存

    原文作者:cathrine
    原文地址: https://segmentfault.com/a/1190000019759811
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞