前端优化(webpack, js, html)
HTTP优化
gzip压缩
资源的压缩与合并
该不该用 Gzip
压缩 Gzip,服务端要花时间;解压 Gzip,浏览器要花时间。中间节省出来的传输时间,真的那么可观吗?建议较大文件进行gizp
webpack4中启动gzip压缩
npm i -D compression-webpack-plugin
plugins: [
new CompressionPlugin({
filename: "[path].gz[query]",
algorithm: "gzip",
test: /\.js$|\.html$|\.css/,
threshold: 10240, // 只处理比这个值大的资源。按字节计算
minRatio: 0.8 // 只有压缩率比这个值小的资源才会被处理
deleteOriginalAssets: false, //是否删除原资源
}),
];
CDN加速
现在大部分云服务商都是提供cdn服务
简单的来说: 原服务器上数据复制到其他服务器上,用户访问时,那台服务器近访问到的就是那台服务器上的数据。
图片(图标)方面
使用字体图标
雪碧图
将多个图标集成在一起
图片使用Base64编码减少页面请求数(建议小图片)
Base64编码图片可以在浏览器自己显示出来
采用Base64的编码方式将图片直接嵌入到网页中,而不是从外部载入,如
使用webpack处理图片成 base64
npm install --save-dev url-loader
// webpack.config.js
module.exports = {
module: {
rules: [{
test: /\.(png|svg|jpg|gif|jpeg|ico|woff|woff2|eot|ttf|otf)$/,
use: [{
loader: "url-loader", // 根据图片大小,把图片优化成base64
options: {
limit: 10000, //小于10000字节的图片都进行base64操作
}
}
]
}]
}
};webpack配置 JPG、PNG、GIF和SVG图像的压缩
// webpack.config.js
module.exports = {
module: {
rules: [
{
loader: "image-webpack-loader", // 先进行图片优化
options: {
mozjpeg: {
progressive: true,
quality: 65,
},
optipng: {
enabled: false,
},
pngquant: {
quality: "65-90",
speed: 4,
},
gifsicle: {
interlaced: false,
},
webp: {
quality: 75,
},
},
},
],
},
};html,css优化
"container">
/**
* 放尾部:页面的解析完毕开始加载js
* 优点:用户无需等待js加载就可以看到界面
*/
/**
* 放尾部:页面先解析html后得到解析css
* 缺点:导致html节点出来没样式后才有
*/