Gzip壓縮 與 http

壓縮文件的目的就是為了把傳輸文件的體積減小,加快傳輸速度。http 傳輸中開啟 gZip的目的也是如此

傳輸壓縮文件給別人時候一般都帶著后綴名 .rar, .zip之類,對方在拿到文件后根據(jù)相應(yīng)的后綴名選擇不同的解壓方式然后去解壓文件。我們在 http 傳輸時候解壓文件的這個角色的扮演者就是我們使用的瀏覽器

  • 服務(wù)端發(fā)送的數(shù)據(jù)可以配置一個 Content-Encoding 字段,這個字段用于說明數(shù)據(jù)的壓縮方法

  • 客戶端在接受到返回的數(shù)據(jù)后去檢查對應(yīng)字段的信息,然后根據(jù)對應(yīng)的格式去做相應(yīng)的解碼。客戶端在請求時,可以用 Accept-Encoding 字段說明自己接受哪些壓縮方法。

在網(wǎng)上看到最多的也是諸如 nginx 開啟 gZip 配置之類的文章,但是現(xiàn)在前端流行 spa 應(yīng)用, 用 react, vue 之類的框架時候總伴隨這一套自己的腳手架,一般用 webpack 作為打包工具,其中可以配置插件 如compression-webpack-plugin 可以讓我們把生成文件進(jìn)行 gZip 等壓縮并生成對應(yīng)的壓縮文件,而我們應(yīng)用在構(gòu)架時候有可能也會在服務(wù)區(qū)和前端文件中放置一層 node 應(yīng)用來進(jìn)行接口鑒權(quán)和文件轉(zhuǎn)發(fā)。nodejs中我們熟悉的express 框架中也有一個compression 中間件,可以開啟gZip,

NGINX壓縮有壓縮等級1-10,如果這個壓縮等級越高,服務(wù)器要壓縮很久才返回數(shù)據(jù),反而會損耗CPU和時間?,F(xiàn)在的應(yīng)用都會使用spa應(yīng)用,文件都是打包生成的,所以webpack中打包生成高壓縮等級的文件,作為靜態(tài)資源存放在服務(wù)器上,接收到請求后把壓縮文件返回回來,是一種更好的解決方式。

const CompressionWebpackPlugin = require('compression-webpack-plugin');
?
webpackConfig.plugins.push(
 new CompressionWebpackPlugin({
 asset: '[path].gz[query]',
 algorithm: 'gzip',
 test: new RegExp('\\.(js|css)/pre>),
 threshold: 10240,
 minRatio: 0.8
 })
) // 壓縮使用的是 zlib 庫,而 zlib 分級來說,默認(rèn)是 6 ,最高的級別就是9

服務(wù)端怎么找到這些文件

壓縮文件會產(chǎn)生index.css, index.js的壓縮文件,在服務(wù)端簡單處理可以判斷這兩個請求然后給予相對應(yīng)的壓縮文件。以 nodeexpress 為例

...
app.get(['/index.js','/index.css'], function (req, res, next) {
 req.url = req.url + '.gz'
 res.set('Content-Encoding', 'gzip')
 res.setHeader("Content-Type", generateType(req.path)) // 這里要根據(jù)請求文件設(shè)置content-type
 next()
})

圖片之類文件則不會被 gzip 壓縮太多,因為它們已經(jīng)內(nèi)置了一些壓縮,一些文件(比如一些已經(jīng)被壓縮的像.zip文件那種)再去壓縮可能會讓生成的文件體積更大一些。當(dāng)然已經(jīng)很小的文件也沒有去壓縮的必要了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文是《圖解HTTP》讀書筆記的第二篇,主要包括此書的第六章內(nèi)容,因為第六章的內(nèi)容較多,而且比較重要,所以單獨寫為...
    lijiankun24閱讀 1,499評論 0 6
  • 一、壓縮算法 1.zip 以下參考他發(fā)明了 zip 壓縮格式,功成名就之際死于墮落壓縮大戰(zhàn)真相 轉(zhuǎn)載自2004.1...
    合肥黑閱讀 6,090評論 0 5
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計算機通信網(wǎng)絡(luò)中兩臺計算機之間進(jìn)行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,793評論 2 20
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,957評論 0 9
  • 瑋蓮 歲月何曾老過 不過是把記憶填滿 童年的真 青春的澀 中年的辛…… 回望的領(lǐng)悟 歲月的刀 刻下記憶的痕 怕迷途...
    驕陽下的一朵蓮閱讀 554評論 7 12

友情鏈接更多精彩內(nèi)容