整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          15、Nginx-網(wǎng)頁壓縮傳輸

          、gzip壓縮技術(shù)

          gzip(GNU-ZIP)是一種壓縮技術(shù),經(jīng)過gzip壓縮后,頁面大小可以變?yōu)樵瓉淼?0%甚至更少,這樣用戶訪問的時候速度會快得多。gzip網(wǎng)頁壓縮的實(shí)現(xiàn)需要瀏覽器和服務(wù)器的支持。

          gzip壓縮的過程:

          首先在服務(wù)器端壓縮,然后傳到瀏覽器端后解壓,當(dāng)瀏覽器支持gzip解壓時,會在請求消息頭中包含Accept-Encoding:gzip,這樣Nginx就會向?yàn)g覽器發(fā)送經(jīng)過gzip后的內(nèi)容,同時在響應(yīng)消息頭中加入Content-Encoding:gzip,這是gzip后的內(nèi)容,告知瀏覽器要先解壓才能解析輸出。

          2、網(wǎng)頁壓縮傳輸配置

          Nginx服務(wù)器為網(wǎng)頁壓縮專門提供了gzip模塊,并且模塊中的相關(guān)指令均可以設(shè)置在http,server,location塊中,實(shí)現(xiàn)服務(wù)器端按照指定的設(shè)置進(jìn)行壓縮,具體指令如下:

          • gzip:用于開啟或關(guān)閉gzip模塊;

          • gzip_buffers:設(shè)置系統(tǒng)獲取幾個單位的緩存用于存儲gzip的壓縮結(jié)果數(shù)據(jù)流;

          • gzip_comp_level:gzip壓縮比,壓縮級別是1~9,1的壓縮級別最低,9的壓縮級別最高,壓縮級別越高壓縮率越大,壓縮時間越長;

          • gzip_disable:對一些特定的User-Agent不使用壓縮功能;

          • gzip_min_length:設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從響應(yīng)消息頭的Content-Length中進(jìn)行獲取;

          • gzip_http_version:識別HTTP協(xié)議版本,其值可以是1.1(默認(rèn)值)或1.0;

          • gzip_proxied:用戶設(shè)置啟用或禁用從代理服務(wù)器上收到響應(yīng)內(nèi)容的gzip壓縮功能;

          • gzip_types:匹配MIME類型進(jìn)行壓縮,且無論是否指定,text/html類型總是會被壓縮的;

          • gzip_vary:用于在響應(yīng)消息頭中添加Vary,Accept-Encoding,使代理服務(wù)器根據(jù)請求頭中的Accept-Encoding識別是否啟用gzip壓縮;

          1、修改配置文件

          2、訪問測試

          Content-Encoding為gzip類型,Content-Type為html,Transfer-Encoding為chunked表示內(nèi)容長度不確定;

          除了上述配置外,在實(shí)際開發(fā) 中還可以具體配置壓縮比,緩存大小,對于代理是否采用壓縮等詳細(xì)的設(shè)置:

          • gzip_buffers 4 16k; //按照原始數(shù)據(jù)大小以16KB為單位的4倍申請內(nèi)存;

          • gzip_comp_level 4; //壓縮等級;

          • gzip_disable "MSIE [1-6]."; //IE6時,不進(jìn)行壓縮,防止出現(xiàn)頁面假死現(xiàn)象;

          • gzip_min_length 5k; //當(dāng)響應(yīng)內(nèi)容大于5kb時進(jìn)行壓縮輸出,且一般建議最小值設(shè)置為1kb,當(dāng)小于1kb時,可能會出現(xiàn)越壓越大的問題;

          • gzip_http_version 1.0;

          • gzip_proxied any;

          • gzip_vary on;

          gzip_proxied常用參數(shù):

          • any:無條件壓縮所有響應(yīng)數(shù)據(jù);

          • off:關(guān)閉反向代理的壓縮;

          • expired:如果響應(yīng)消息頭包含Expires,啟用壓縮;

          • no-cache:如果響應(yīng)消息頭包含Cache-Control:no-cache,啟用壓縮;

          • no-store:如果響應(yīng)消息頭包含Cache-Control:no-store,啟用壓縮;

          • private:如果響應(yīng)消息頭包含Cache-Control:private,啟用壓縮;

          • no_last_modified:如果響應(yīng)消息頭中不包含Last-Modified,啟用壓縮;

          • no_etag:如果響應(yīng)消息頭中不包含ETag,啟用壓縮;

          • auth:如果響應(yīng)消息頭中包含Authorization頭信息,啟用壓縮;

          實(shí)現(xiàn) HTML 壓縮,可以使用 JavaScript 中的正則表達(dá)式來去除 HTML 中的空格和注釋。以下是一個簡單的 HTML 壓縮函數(shù):

          function compressHTML(html) {
            // 去除注釋
            html = html.replace(/<!--[\s\S]*?-->/g, "");
            // 去除多余空白
            html = html.replace(/\s+/g, " ");
            // 去除標(biāo)簽之間空格
            html = html.replace(/>\s+</g, "><");
            return html.trim();
          }

          該函數(shù)首先使用正則表達(dá)式去除 HTML 中的注釋。然后,它使用另一個正則表達(dá)式去除 HTML 中的多余空格。最后,它使用另一個正則表達(dá)式去除標(biāo)簽之間的空格。

          為了測試該函數(shù),您可以創(chuàng)建一個 HTML 文件,并在其中添加一些冗余的空格和注釋。例如:

          <!DOCTYPE html>
          <html>
            <head>
              <title>My Website</title>
            </head>
            <body>
              <!-- This is a comment -->
              <h1> Welcome to my website! </h1>
              <p> This is some text. </p>
            </body>
          </html>

          然后,您可以在Node.JS中使用以下代碼將 HTML 文件加載為字符串并壓縮它:

          // 加載 HTML 文件
          const fs = require("fs");
          const html = fs.readFileSync("index.html", "utf8");
          // 壓縮 HTML
          const compressedHtml = compressHTML(html);
          console.log(compressedHtml);

          輸出是一個壓縮后的 HTML 字符串,其中不包含注釋或冗余空格。

          或者直接在IE中測試,代碼如下:

          function compressHTML(html) {
            // 去除注釋
            html = html.replace(/<!--[\s\S]*?-->/g, "");
            // 去除多余空白
            html = html.replace(/\s+/g, " ");
            // 去除標(biāo)簽之間空格
            html = html.replace(/>\s+</g, "><");
            return html.trim();
          }
          var html =`
          <!DOCTYPE html>
          <html>
            <head>
              <title>My Website</title>
            </head>
            <body>
              <!-- This is a comment -->
              <h1> Welcome to my website! </h1>
              <p> This is some text. </p>
            </body>
          </html>
          `;
          console.log(compressHTML(html));

          運(yùn)行效果:

          TML+JQUERY超大視頻上傳解決方案

          最近項(xiàng)目有個需求,需要在網(wǎng)頁前端實(shí)現(xiàn)大文件,文件夾的上傳和下載,需要支持?jǐn)帱c(diǎn)續(xù)傳,MD5校驗(yàn),文件秒傳,加密傳輸(國密SM4),加密存儲,壓縮傳輸(zip,gzip)功能,前端框架使用VUE,后端用的是JAVA SpringBoot

          ?

          這個是央企項(xiàng)目,因?yàn)閲倚畔踩囊蛩兀姓?xiàng)目都必須支持信創(chuàng)國產(chǎn)化環(huán)境:國產(chǎn)操作系統(tǒng),國產(chǎn)數(shù)據(jù)庫,國產(chǎn)瀏覽器,客戶那邊有些系統(tǒng)用的是Windows7 + IE8,也要求兼容。

          ?

          網(wǎng)上搜了很多文章,基本上的方案都是vue+html5,或百度webuploader,我們之前也是采用的這個方案,穩(wěn)定性比較差,傳上去的文件數(shù)據(jù)容易出錯,然后斷點(diǎn)續(xù)傳功能不夠完善,用戶傳大文件的時候?yàn)g覽器響應(yīng)卡頓容易崩潰,用戶傳文件的時候不能刷新頁面,也不能關(guān)閉頁面,否則文件進(jìn)度將會丟失。這個對于現(xiàn)在的客戶來說有點(diǎn)難以接受,因?yàn)橛脩魝鞯奈募容^大,1G到10G都有,可能一次傳不完,傳一半,第二天再傳。

          ?

          找了幾個月,只發(fā)現(xiàn)一個產(chǎn)品比較不錯:澤優(yōu)大文件上傳控件(up6),不僅提供了產(chǎn)品源碼,視頻教程,開發(fā)部這邊集成很快,基本上沒花什么時間,直接把他的代碼復(fù)制到項(xiàng)目中就完事了。

          ?

          我們的需求實(shí)際上很簡單,第一就是希望使用簡單,不管是對開發(fā)人員,還是對普通用戶都要使用簡單。對開發(fā)人員來說要集成和整合簡單,能夠提供前端和后端 API,前端API使用和調(diào)用要方便。對于普通用戶,要使用簡單學(xué)習(xí)成本低。不需要進(jìn)行使用培訓(xùn)。

          ?

          第二點(diǎn)就是穩(wěn)定可靠,用戶是政府單位的,對穩(wěn)定性要求比較高。用戶每天上傳和下載的文件都比較多,大的有10GB左右,小的有幾百KB。

          ?

          第三點(diǎn)就是能夠提供技術(shù)支持,因?yàn)槭钦蛻簦仨氁屑夹g(shù)支持,這個是硬指標(biāo),因?yàn)轫?xiàng)目周期也比較長,中途可能會變更需求或者定制開發(fā),所以廠商必須提供技術(shù)服務(wù)。

          ?

          除了這些還有一點(diǎn)就是下載功能需要也支持?jǐn)帱c(diǎn)續(xù)傳。用戶平時會從系統(tǒng)中下載很多文件,文件有大有小,大的1G,小的幾KB,但是用戶是批量下載,不是打包成ZIP下載。

          ?

          上面的幾點(diǎn)能夠滿足的話基本上就沒有什么問題,領(lǐng)導(dǎo)這邊希望提供OEM買斷或控件源代碼的采購方式,我們是軟件公司,專門做政府和央企項(xiàng)目,客戶項(xiàng)目比較多,有些政府大客戶要求源代碼審查,領(lǐng)導(dǎo)希望集成到我們自己的產(chǎn)品中去賣,這樣就能夠?yàn)樗杏脩籼峁┻@個功能,用戶體驗(yàn)也能夠統(tǒng)一。后面維護(hù)起來也方便。主要是領(lǐng)導(dǎo)不想每次都要單獨(dú)采購,太麻煩了。

          ?

          示例下載:


          主站蜘蛛池模板: 国产MD视频一区二区三区| 91午夜精品亚洲一区二区三区| 狠狠做深爱婷婷久久综合一区| 亚无码乱人伦一区二区| 日韩久久精品一区二区三区 | 波多野结衣一区在线| 人妻内射一区二区在线视频| 亚洲AV日韩精品一区二区三区| 国产在线一区二区三区| 国产日韩精品视频一区二区三区| 精品国产免费一区二区| 国产精品成人国产乱一区| 性色A码一区二区三区天美传媒| 亚洲AV香蕉一区区二区三区| 精品视频在线观看一区二区| 中文字幕一区二区人妻性色| 精品少妇人妻AV一区二区三区| 免费视频精品一区二区| 久久se精品一区二区国产| 精品无人乱码一区二区三区| 色妞AV永久一区二区国产AV| 国产美女一区二区三区| 一区二区视频在线免费观看| 亚洲va乱码一区二区三区| 美女免费视频一区二区| 人妻无码久久一区二区三区免费 | 性盈盈影院免费视频观看在线一区| 国产婷婷色一区二区三区| 中文乱码人妻系列一区二区| 一区二区三区无码高清视频| 亚洲色偷偷偷网站色偷一区| 高清一区二区三区| 国产主播在线一区| 亚州日本乱码一区二区三区 | 亚洲人AV永久一区二区三区久久| 久久国产精品视频一区| 福利视频一区二区牛牛 | 少妇一晚三次一区二区三区| 国产自产V一区二区三区C| 精品一区二区91| bt7086福利一区国产|