前端優(yōu)化(webpack, js, html)
HTTP優(yōu)化
gzip壓縮
資源的壓縮與合并
該不該用 Gzip
壓縮 Gzip,服務(wù)端要花時(shí)間;解壓 Gzip,瀏覽器要花時(shí)間。中間節(jié)省出來的傳輸時(shí)間,真的那么可觀嗎?建議較大文件進(jìn)行g(shù)izp
webpack4中啟動(dòng)gzip壓縮
npm?i?-D?compression-webpack-plugin
plugins:?[
??new?CompressionPlugin({
????filename:?"[path].gz[query]",
????algorithm:?"gzip",
????test:?/\.js$|\.html$|\.css/,
??? threshold: 10240, //?只處理比這個(gè)值大的資源。按字節(jié)計(jì)算
????minRatio:?0.8?//?????只有壓縮率比這個(gè)值小的資源才會(huì)被處理
????deleteOriginalAssets:?false,?//是否刪除原資源
??}),
];
CDN加速
現(xiàn)在大部分云服務(wù)商都是提供cdn服務(wù)

簡(jiǎn)單的來說: 原服務(wù)器上數(shù)據(jù)復(fù)制到其他服務(wù)器上,用戶訪問時(shí),那臺(tái)服務(wù)器近訪問到的就是那臺(tái)服務(wù)器上的數(shù)據(jù)。
圖片(圖標(biāo))方面
使用字體圖標(biāo)
雪碧圖
將多個(gè)圖標(biāo)集成在一起
圖片使用Base64編碼減少頁(yè)面請(qǐng)求數(shù)(建議小圖片)
Base64編碼圖片可以在瀏覽器自己顯示出來
采用Base64的編碼方式將圖片直接嵌入到網(wǎng)頁(yè)中,而不是從外部載入,如
使用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",?//?根據(jù)圖片大小,把圖片優(yōu)化成base64
??????????options:?{
????????????limit:?10000,?//小于10000字節(jié)的圖片都進(jìn)行base64操作
??????????}
????????}
??????]
????}]
??}
};webpack配置 JPG、PNG、GIF和SVG圖像的壓縮
//?webpack.config.js
module.exports?=?{
??module:?{
????rules:?[
??????{
????????loader:?"image-webpack-loader",?//?先進(jìn)行圖片優(yōu)化
????????options:?{
??????????mozjpeg:?{
????????????progressive:?true,
????????????quality:?65,
??????????},
??????????optipng:?{
????????????enabled:?false,
??????????},
??????????pngquant:?{
????????????quality:?"65-90",
????????????speed:?4,
??????????},
??????????gifsicle:?{
????????????interlaced:?false,
??????????},
??????????webp:?{
????????????quality:?75,
??????????},
????????},
??????},
????],
??},
};html,css優(yōu)化
??"container">
??/**
??*?放尾部:頁(yè)面的解析完畢開始加載js
??*?優(yōu)點(diǎn):用戶無(wú)需等待js加載就可以看到界面
??*/
???
??/**
??*?放尾部:頁(yè)面先解析html后得到解析css
??*?缺點(diǎn):導(dǎo)致html節(jié)點(diǎn)出來沒樣式后才有
??*/
??
