99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入淺出了解華為云 API 網(wǎng)關(guān)的 Gzip 功能

jf_94205927 ? 來(lái)源:jf_94205927 ? 作者:jf_94205927 ? 2023-11-12 17:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Gzip 是什么

Gzip 是一種用于數(shù)據(jù)壓縮的編碼格式,經(jīng)常被使用在基于 HTTP 協(xié)議的網(wǎng)絡(luò)傳輸中。Gzip 功能允許服務(wù)器在傳輸數(shù)據(jù)是對(duì)其進(jìn)行壓縮,從而減小傳輸?shù)臄?shù)據(jù)量,加快頁(yè)面加載速度,這對(duì)于節(jié)省帶寬和提高用戶體驗(yàn)非常有用。本文將從 Gzip 使用場(chǎng)景、Gzip 原理、Gzip 在 nginx 中的應(yīng)用以及華為云 API網(wǎng)關(guān)的 Gzip 功能實(shí)現(xiàn)幾個(gè)方面介紹 Gzip。

Gzip 使用場(chǎng)景

Gzip 能夠提升傳輸速度和降低帶寬消耗,因此適合應(yīng)用 Gzip 的場(chǎng)景有很多。

網(wǎng)頁(yè)傳輸:在 web 開(kāi)發(fā)中,使用 Gzip 可以減小文件大小,從而加快頁(yè)面加載速度。

移動(dòng)應(yīng)用通信:在移動(dòng)應(yīng)用中,使用 Gzip 可以降低移動(dòng)網(wǎng)絡(luò)的數(shù)據(jù)消耗,加快數(shù)據(jù)傳輸速度,提升用戶體驗(yàn)。

文件備份和傳輸:在進(jìn)行文件備份或者文件傳輸時(shí),使用 Gzip 可以減小備份文件的大小,節(jié)省存儲(chǔ)空間和傳輸帶寬。

網(wǎng)絡(luò)傳輸限制:在網(wǎng)絡(luò)帶寬受限的環(huán)境下,使用Gzip可以減小數(shù)據(jù)傳輸量,提升網(wǎng)絡(luò)性能。

API 通信:對(duì)于RESTfulAPI或其他數(shù)據(jù)接口的傳輸,使用Gzip可以降低傳輸?shù)臄?shù)據(jù)量,減少對(duì)網(wǎng)絡(luò)帶寬的占用,提升響應(yīng)速度。

Gzip 原理

gzip 使用 deflate 算法進(jìn)行壓縮。其原理主要包括 LZ77 算法以及 Huffman 編碼(哈夫曼編碼)。

LZ77 算法

LZ77 算法是將重復(fù)字符串替換為長(zhǎng)度距離對(duì)來(lái)達(dá)到壓縮的目的。長(zhǎng)度是重復(fù)字符串的長(zhǎng)度,距離是重復(fù)字符串與第一個(gè)出現(xiàn)該字符串的距離,下圖是一個(gè)簡(jiǎn)單的示例:

wKgaomVOOJiAUGSzAAAUUXecyug847.png

在 LZ77 算法中,主要運(yùn)用了基于滑動(dòng)窗口的字典壓縮算法。首先是滑動(dòng)窗口:

wKgZomVOOJmAYqfRAAALlE0EfZw289.png

以上圖為例,一開(kāi)始,查找區(qū)是沒(méi)有字符的?;瑒?dòng)窗口從 K 開(kāi)始移動(dòng),依次在查找區(qū)嘗試查找當(dāng)前指向字符及之后字符的最長(zhǎng)匹配,直到滑動(dòng)窗口區(qū)不再有字符為止。這里就涉及到另外一個(gè)問(wèn)題了,如何在查找區(qū)中快速的找到與滑動(dòng)窗口中匹配的字符,LZ77 顯然不會(huì)采取暴力遍歷查找的方法,通常使用哈希數(shù)組來(lái)實(shí)現(xiàn)字典的快速搜索。在哈希數(shù)組中有兩個(gè)數(shù)組,一個(gè)數(shù)組用來(lái)存放最新重復(fù)字符串的哈希地址,一個(gè)數(shù)組用來(lái)解決哈希沖突。具體以下圖為例進(jìn)行說(shuō)明:

wKgaomVOOJqAUpPkAAKB7z4YWsI895.png

當(dāng)?shù)谝淮螔呙?ABC 時(shí),對(duì)應(yīng)數(shù)組 1 中 4 號(hào)位置為空,因此不用轉(zhuǎn)化為長(zhǎng)度距離對(duì)。當(dāng)?shù)诙螔呙璧?ABC 時(shí),對(duì)應(yīng)數(shù)組 1 中 4 號(hào)位置存放的是 1,于是將 4 號(hào)位置替換為 6,再將 1 放置在數(shù)組 2 中的 6 號(hào)位置,此時(shí)數(shù)組 2 的 6 號(hào)位置存放的是 1,對(duì)當(dāng)前字符串后的字符繼續(xù)和 1 位置對(duì)應(yīng)字符后的字符繼續(xù)進(jìn)行匹配,記錄最長(zhǎng)匹配字符長(zhǎng)度。然后在數(shù)組 2 中查找 1 號(hào)位置,如果為空則結(jié)束匹配,最后將匹配到的最長(zhǎng)字符替換為長(zhǎng)度距離對(duì)。

Huffman 編碼

Huffman 編碼的原理是基于哈夫曼樹(shù)。哈夫曼樹(shù)是一種最優(yōu)二叉樹(shù),是一種帶權(quán)路徑長(zhǎng)度最短的二叉樹(shù)。

以下是哈夫曼樹(shù)的構(gòu)造過(guò)程:

假設(shè)有 A、B、C、D、E 五個(gè)字母,他們對(duì)應(yīng)出現(xiàn)的次數(shù)分別為 5,6,8,12,20

wKgZomVOOJqACtcXAAK-fbZiow4958.png

構(gòu)造哈夫曼樹(shù)的基本流程:將 A、B、C、D、E 看作是只有一個(gè)結(jié)點(diǎn)的樹(shù),其中出現(xiàn)的次數(shù)作為他們的權(quán)值。將權(quán)值和最小的兩個(gè)數(shù)進(jìn)行合并稱為一個(gè)新樹(shù),權(quán)值較小的樹(shù)作為左子樹(shù),權(quán)值較大的樹(shù)作為右子樹(shù),新樹(shù)的根結(jié)點(diǎn)權(quán)值為兩子樹(shù)之和,然后將新樹(shù)也加入到樹(shù)的集合中,重復(fù)上述流程知道又有一棵樹(shù)為止。

針對(duì)哈夫曼樹(shù)編碼,左分支為 0,右分支為 1??傻贸?A、B、C、D、E 的編碼如下:

wKgaomVOOJuAVdo9AAAVH5PPyR8818.png

從最后的編碼來(lái)看,出現(xiàn)次數(shù)最多的 E 的編碼長(zhǎng)度比出現(xiàn)次數(shù)較少的 A 或 B 要少。最終頻率高的字符會(huì)使用較短的編碼,頻率低的字符會(huì)使用較長(zhǎng)的編碼,總體的編碼長(zhǎng)度就會(huì)變小,從而達(dá)到壓縮的結(jié)果。

Gzip 在 Nginx 中的應(yīng)用

Nginx 作為當(dāng)下很流行的開(kāi)源網(wǎng)頁(yè)服務(wù)器和反向代理服務(wù)器,原生支持了 Gzip 的功能。但是在 Nginx 中 Gzip 功能默認(rèn)是不開(kāi)啟,需要在配置文件中配置相關(guān)指令才可以開(kāi)啟 Gzip 功能。常見(jiàn)的配置項(xiàng)如下:

wKgZomVOOJuAbgeLAAQ0_ftpfAo173.png

華為云 API網(wǎng)關(guān)的 Gzip 功能

華為云API網(wǎng)關(guān)(APIG)為企業(yè)和開(kāi)發(fā)者提供的高性能、高可用、高安全的云原生網(wǎng)關(guān)服務(wù),融合安全、負(fù)載均衡、流量入口治理、微服務(wù)流量治理、運(yùn)維等多項(xiàng)能力,也支持 Gzip 壓縮功能。用戶可以通過(guò)一鍵式開(kāi)關(guān)控制 Gzip 功能的開(kāi)啟。同時(shí) APIG 還開(kāi)放了壓縮等級(jí),用戶可以通過(guò)配置不同的壓縮等級(jí),根據(jù)自己的需求對(duì) Gzip 功能進(jìn)行性能調(diào)優(yōu)。當(dāng)一個(gè)客戶端發(fā)送一個(gè) HTTP 請(qǐng)求時(shí),需要包含一個(gè) Accept-Encoding 頭部用來(lái)指示客戶端支持的壓縮算法。

APIG 會(huì)根據(jù) GZIP 開(kāi)關(guān)來(lái)判斷是否進(jìn)行壓縮。在開(kāi)關(guān)開(kāi)啟的狀態(tài)下,APIG 會(huì)將響應(yīng)內(nèi)容壓縮,然后將壓縮后的響應(yīng)發(fā)送給客戶端(如果客戶端已經(jīng)進(jìn)行 Gzip 壓縮,那么 APIG 將不會(huì)進(jìn)行二次壓縮)??蛻舳耸盏巾憫?yīng)后,會(huì)根據(jù)響應(yīng)頭部的 Content-Encoding 字段判斷是否經(jīng)過(guò)了壓縮。如果響應(yīng)被壓縮了,客戶端會(huì)進(jìn)行解壓縮,以獲取原始的內(nèi)容。

可以參考以下步驟打開(kāi) Gzip 開(kāi)關(guān)及設(shè)置壓縮等級(jí):

打開(kāi)華為云 APIG 控制臺(tái),依次進(jìn)入實(shí)例管理-->配置參數(shù),在頁(yè)面列表中找到參數(shù) gzip 如下:

wKgaomVOOJyAGw8LAABXZy_ZJIc295.png

如上圖,gzip 功能為開(kāi)啟狀態(tài),且壓縮等級(jí)為 6。

此外,APIG 還提供了 Debug 功能用以調(diào)試 Gzip 功能。首先依次打開(kāi) API 列表,然后點(diǎn)擊創(chuàng)建 API。

wKgZomVOOJyAeoX2AAGQXfX0NVE360.png

在填寫(xiě)好 API 詳細(xì)信息后,在后端配置選項(xiàng)頁(yè)面選擇 Mock 后端,并且增加 header 參數(shù)-content-length(參數(shù)值需要大于等于 1028,否則 gzip 功能將不生效。)

wKgaomVOOJ2ADw3AAAGLWE-ayl0835.png

然后進(jìn)入 API 的調(diào)試界面,在 Headers 中添加參數(shù):Accept-Encoding,對(duì)應(yīng)參數(shù)值為 gzip。在響應(yīng)結(jié)果中,如果有 Content-Encoding:gzip出現(xiàn),即代表 Gzip 功能生效。

wKgZomVOOJ6AWV9wAAMtoVN6byQ970.png

Gzip 自首次發(fā)布以來(lái),已經(jīng)成為互聯(lián)網(wǎng)上常用的壓縮格式之一。各種高性能的開(kāi)源代理如 Nginx、Envoy 等都原生支持 Gzip 的功能。在傳輸速度和降低帶寬消耗方面,Gzip 有著十分強(qiáng)大的優(yōu)勢(shì),希望本文能幫助到想要了解 Gzip 背后原理及其應(yīng)用的人。

另外,如果你有更多關(guān)于華為云產(chǎn)品的疑問(wèn),可掃碼添加華為云專家的聯(lián)系方式,咨詢相關(guān)問(wèn)題。

審核編輯 黃宇


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)關(guān)
    +關(guān)注

    關(guān)注

    9

    文章

    5654

    瀏覽量

    52956
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1609

    瀏覽量

    64001
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2770

    瀏覽量

    18300
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    SIP 廣播對(duì)講與華為視頻會(huì)議融合解決方案

    對(duì)講終端與視頻會(huì)議終端接入同一網(wǎng)絡(luò),由統(tǒng)一的管理平臺(tái)進(jìn)行管理,實(shí)現(xiàn)功能聯(lián)動(dòng)。 系統(tǒng)架構(gòu) : 控制層 :可在阿里華為部署 SIP 集群
    發(fā)表于 07-12 10:57

    深入淺出解析低功耗藍(lán)牙協(xié)議棧

    深入Bluetooth LE協(xié)議棧各個(gè)組成部分之前,我們先看一下Bluetooth LE協(xié)議棧整體架構(gòu)。 如上圖所述,要實(shí)現(xiàn)一個(gè)Bluetooth LE應(yīng)用,首先需要一個(gè)支持Bluetooth
    的頭像 發(fā)表于 04-09 14:49 ?517次閱讀
    <b class='flag-5'>深入淺出</b>解析低功耗藍(lán)牙協(xié)議棧

    【貝啟科技BQ3568HM開(kāi)源鴻蒙開(kāi)發(fā)板深度試用報(bào)告】3 - 智能家居中控屏連接華為IoTDA物聯(lián)網(wǎng)平臺(tái)

    了應(yīng)用側(cè)API,實(shí)現(xiàn)設(shè)備數(shù)據(jù)采集、命令下發(fā)、設(shè)備管理等業(yè)務(wù)場(chǎng)景。 有關(guān)應(yīng)用側(cè)API參見(jiàn):應(yīng)用側(cè)API參考_設(shè)備接入 IoTDA_華為。 為
    發(fā)表于 02-06 09:39

    深入解析華為 X 實(shí)例保障上業(yè)務(wù)安全的關(guān)鍵策略

    。華為作為全球領(lǐng)先的服務(wù)提供商之一,在安全性方面為用戶提供了全面的保障。其華為 X 實(shí)例憑借強(qiáng)大的性能和安全性,成為眾多企業(yè)業(yè)務(wù)部署的
    的頭像 發(fā)表于 01-03 09:25 ?596次閱讀
    <b class='flag-5'>深入</b>解析<b class='flag-5'>華為</b><b class='flag-5'>云</b> X 實(shí)例保障<b class='flag-5'>云</b>上業(yè)務(wù)安全的關(guān)鍵策略

    api驅(qū)動(dòng)的服務(wù)是什么意思?

    API驅(qū)動(dòng)的服務(wù)是指利用API技術(shù)來(lái)驅(qū)動(dòng)和提供服務(wù)的模式。在這種模式下,服務(wù)提供商會(huì)公開(kāi)一系列的A
    的頭像 發(fā)表于 11-14 10:06 ?568次閱讀

    華為CodeArts API助力企業(yè)數(shù)字化轉(zhuǎn)型

    工具顯得尤為重要,它能夠顯著幫助企業(yè)提升API的研發(fā)與管理效率,華為CodeArts API正是這樣一位助力企業(yè)數(shù)字化轉(zhuǎn)型的好幫手。
    的頭像 發(fā)表于 11-09 16:07 ?844次閱讀

    工業(yè)網(wǎng)關(guān)有什么功能和優(yōu)勢(shì)

    的重要工具。 功能 設(shè)備連接與通信 工業(yè)網(wǎng)關(guān)支持多種網(wǎng)絡(luò)協(xié)議和連接方式,如5G/4G/Wi-Fi/以太網(wǎng)等,能夠?qū)⒏鞣N工業(yè)設(shè)備(如PLC、儀器儀表、CNC機(jī)床、傳感器等)與平臺(tái)無(wú)縫
    的頭像 發(fā)表于 10-25 14:33 ?542次閱讀

    使用API Post測(cè)試阿里物聯(lián)網(wǎng)平臺(tái)動(dòng)態(tài)注冊(cè)

    使用API Post測(cè)試阿里物聯(lián)網(wǎng)平臺(tái)動(dòng)態(tài)注冊(cè)
    的頭像 發(fā)表于 10-05 19:08 ?848次閱讀
    使用<b class='flag-5'>API</b> Post測(cè)試阿里<b class='flag-5'>云</b>物聯(lián)網(wǎng)平臺(tái)動(dòng)態(tài)注冊(cè)

    深入淺出系列之代碼可讀性

    原創(chuàng)聲明:該文章是個(gè)人在項(xiàng)目中親歷后的經(jīng)驗(yàn)總結(jié)和分享,如有搬運(yùn)需求請(qǐng)注明出處。 這是“深入淺出系列”文章的第一篇,主要記錄和分享程序設(shè)計(jì)的一些思想和方法論,如果讀者覺(jué)得所有受用,還請(qǐng)“一鍵三連
    的頭像 發(fā)表于 08-09 16:00 ?522次閱讀

    鋇錸技術(shù)BL102 PLC轉(zhuǎn)MQTT網(wǎng)關(guān):三菱PLC數(shù)據(jù)高效上傳至華為平臺(tái)

    鋇錸技術(shù)推出了PLC轉(zhuǎn)MQTT網(wǎng)關(guān)來(lái)實(shí)現(xiàn)三菱PLC數(shù)據(jù)的高效采集與上傳至華為平臺(tái),一起來(lái)看看。
    的頭像 發(fā)表于 07-31 14:48 ?993次閱讀
    鋇錸技術(shù)BL102 PLC轉(zhuǎn)MQTT<b class='flag-5'>網(wǎng)關(guān)</b>:三菱PLC數(shù)據(jù)高效上傳至<b class='flag-5'>華為</b><b class='flag-5'>云</b>平臺(tái)

    利用鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)數(shù)據(jù)高效上傳至華為平臺(tái)

    西門子PLC通常通過(guò)Modbus協(xié)議進(jìn)行數(shù)據(jù)傳輸,但平臺(tái)更傾向于使用MQTT等輕量級(jí)、高效的數(shù)據(jù)傳輸協(xié)議。為此,鋇錸技術(shù)推出了 Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)西門子PLC數(shù)據(jù)的高效采集與上傳至
    的頭像 發(fā)表于 07-30 13:53 ?685次閱讀
    利用鋇錸Modbus轉(zhuǎn)MQTT<b class='flag-5'>網(wǎng)關(guān)</b>實(shí)現(xiàn)數(shù)據(jù)高效上傳至<b class='flag-5'>華為</b><b class='flag-5'>云</b>平臺(tái)

    鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)支持一鍵接入華為

    網(wǎng)關(guān)BL100,作為一款高性能、高性價(jià)比的物聯(lián)網(wǎng)網(wǎng)關(guān),支持Modbus設(shè)備接入華為平臺(tái),為工業(yè)設(shè)備的智能化升級(jí)提供了有力支持。 一、BL100網(wǎng)關(guān)
    的頭像 發(fā)表于 07-29 13:47 ?520次閱讀
    鋇錸Modbus轉(zhuǎn)MQTT<b class='flag-5'>網(wǎng)關(guān)</b>支持一鍵接入<b class='flag-5'>華為</b><b class='flag-5'>云</b>

    IEC104轉(zhuǎn)MQTT網(wǎng)關(guān)支持Zabbix、阿里、華為、亞馬遜AWS、ThingsBoard、Ignition

    網(wǎng)關(guān)BE113作為這一融合過(guò)程中的關(guān)鍵設(shè)備,其能夠?qū)EC 104協(xié)議的數(shù)據(jù)轉(zhuǎn)換為MQTT消息,從而輕松接入Zabbix、阿里、華為、亞馬遜AWS、ThingsBoard、Igni
    的頭像 發(fā)表于 07-25 16:55 ?1030次閱讀
    IEC104轉(zhuǎn)MQTT<b class='flag-5'>網(wǎng)關(guān)</b>支持Zabbix、阿里<b class='flag-5'>云</b>、<b class='flag-5'>華為</b><b class='flag-5'>云</b>、亞馬遜AWS、ThingsBoard、Ignition

    請(qǐng)問(wèn)ESP是否支持LiteOS+華為IOT+AT的方式?

    我們想使用ESP32 AT模式連接華為IOT平臺(tái),并且ESP32要運(yùn)行LiteOS,請(qǐng)問(wèn)現(xiàn)在ESP32支持這個(gè)功能
    發(fā)表于 07-19 07:32

    是否可以擴(kuò)展esp_iot_rtos_sdk以具有api功能來(lái)進(jìn)行更新?

    是否可以擴(kuò)展esp_iot_rtos_sdk以具有 api 功能來(lái)進(jìn)行更新?SDK 編程指南(盡管我認(rèn)為它不適用于 rtos sdk)表明存在
    發(fā)表于 07-15 08:19