国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端性能優(yōu)化之gzip

張利勇 / 2652人閱讀

摘要:客戶端請求頭聲明瀏覽器支持的壓縮方式,服務端配置啟用壓縮,壓縮的文件類型,壓縮方式。建議設置成大于的字節(jié)數(shù),小于可能會越壓越大。

背景

如果你是個前端開發(fā)人員,你肯定知道線上環(huán)境要把js,css,圖片等壓縮,盡量減少文件的大小,提升響應速度,特別是對移動端,這個非常重要。

壓縮 壓縮方式

前端壓縮的方式很多,依賴java的有ant工具,前端自己打包壓縮的有grunt,gulp,webpack,這些壓縮也很重要,基本上能壓縮50%以上,下面我們對壓縮文件來個對比,如圖所示,這是未壓縮的

這是壓縮后的

高能預警!!!gzip能在壓縮的基礎上再進行壓縮50%以上!!!

gzip壓縮原理

但是不是每個瀏覽器都支持gzip的,如果知道客戶端是否支持gzip呢,請求頭中有個Accept-Encoding來標識對壓縮的支持。客戶端http請求頭聲明瀏覽器支持的壓縮方式,服務端配置啟用壓縮,壓縮的文件類型,壓縮方式。當客戶端請求到服務端的時候,服務器解析請求頭,如果客戶端支持gzip壓縮,響應時對請求的資源進行壓縮并返回給客戶端,瀏覽器按照自己的方式解析,在http響應頭,我們可以看到content-encoding:gzip,這是指服務端使用了gzip的壓縮方式。

那么怎么看有沒有用gzip壓縮的文件呢,打開f12,查看network,按照下面的方式過濾

content-encoding是gzip的話就說明返回的是gzip

如何啟用gzip

前面說過了,啟用gzip需要客戶端和服務端的支持,如果客戶端支持gzip的解析,那么只要服務端能夠返回gzip的文件就可以啟用gzip了,現(xiàn)在來說一下幾種不同的環(huán)境下的服務端如何配置

node端

node端很簡單,只要加上compress模塊即可,代碼如下

var compression = require("compression")
var app = express();

//盡量在其他中間件前使用compression
app.use(compression());

這是基本用法,如果還要對請求進行過濾的話,還要加上

app.use(compression({filter: shouldCompress}))

function shouldCompress (req, res) {
  if (req.headers["x-no-compression"]) {
    // 這里就過濾掉了請求頭包含"x-no-compression"
    return false
  }

  return compression.filter(req, res)
}

更多用法請移步compression文檔
如果用的是koa,用法和上面的差不多

const compress = require("koa-compress");
const app = module.exports = new Koa();
app.use(compress());

因為node讀取的是生成目錄中的文件,所以要先用webpack等其他工具進行壓縮成gzip,webpack的配置如下

const CompressionWebpackPlugin = require("compression-webpack-plugin");
plugins.push(
    new CompressionWebpackPlugin({
        asset: "[path].gz[query]",// 目標文件名
        algorithm: "gzip",// 使用gzip壓縮
        test: new RegExp(
            ".(js|css)$" // 壓縮 js 與 css
        ),
        threshold: 10240,// 資源文件大于10240B=10kB時會被壓縮
        minRatio: 0.8 // 最小壓縮比達到0.8時才會被壓縮
    })
);

plugins是webpack的插件

tomcat

tomcat的配置如下

找到tomcat的server.xml文件,找到其中Connector節(jié)點然后進行配置修改,具體配置如下

參數(shù)說明:

compression="on" 打開壓縮功能

compressionMinSize="2048" 啟用壓縮的輸出內容大小,當被壓縮對象的大小>=該值時才會被壓縮,這里面默認為2KB

noCompressionUserAgents="gozilla, traviata" 對于以下的瀏覽器,不啟用壓縮

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 壓縮類型

注意:tomcat7以后,js文件的mimetype類型變?yōu)榱薬pplication/javascript,而在tomcat7以下則為text/javascript;具體的tomcat7定義的類型可以在:conf/web.xml文件中找到。

可以在web.xml下搜索,如我搜索javascript會找到如下代碼


    js
    application/javascript

切記上面的類型不能配置錯了,如果配置錯了壓縮是不會起作用的。

nginx

gzip使用環(huán)境:http,server,location,if(x),一般把它定義在nginx.conf的http{…..}之間

gzip on
on為啟用,off為關閉

gzip_min_length 1k
設置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭中的Content-Length中進行獲取。默認值是0,不管頁面多大都壓縮。建議設置成大于1k的字節(jié)數(shù),小于1k可能會越壓越大。

gzip_buffers 4 16k
獲取多少內存用于緩存壓縮結果,‘4 16k’表示以16k*4為單位獲得

gzip_comp_level 5
gzip壓縮比(1~9),越小壓縮效果越差,但是越大處理越慢,所以一般取中間值;

gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php
對特定的MIME類型生效,其中"text/html’被系統(tǒng)強制啟用

gzip_http_version 1.1
識別http協(xié)議的版本,早起瀏覽器可能不支持gzip自解壓,用戶會看到亂碼

gzip_vary on
啟用應答頭"Vary: Accept-Encoding"

gzip_proxied off
nginx做為反向代理時啟用,off(關閉所有代理結果的數(shù)據(jù)的壓縮),expired(啟用壓縮,如果header頭中包括"Expires"頭信息),no-cache(啟用壓縮,header頭中包含"Cache-Control:no-cache"),no-store(啟用壓縮,header頭中包含"Cache-Control:no-store"),private(啟用壓縮,header頭中包含"Cache-Control:private"),no_last_modefied(啟用壓縮,header頭中不包含"Last-Modified"),no_etag(啟用壓縮,如果header頭中不包含"Etag"頭信息),auth(啟用壓縮,如果header頭中包含"Authorization"頭信息)

gzip_disable msie6
(IE5.5和IE6 SP1使用msie6參數(shù)來禁止gzip壓縮 )指定哪些不需要gzip壓縮的瀏覽器(將和User-Agents進行匹配),依賴于PCRE庫

以上代碼可以插入到 http {...}整個服務器的配置里,也可以插入到虛擬主機的 server {...}或者下面的location模塊內

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/112918.html

相關文章

  • 前端性能優(yōu)化gzip

    摘要:協(xié)議上的編碼是一種用來改進應用程序性能的技術。目前主流的瀏覽器等都支持該協(xié)議。啟用或禁用響應。可接受的值范圍為到。設置將被壓縮的響應的最小長度。長度僅由響應頭字段確定。而里面的只是表示前端用戶瀏覽器支持的壓縮方式。 gzip是GNUzip的縮寫,它是一個GNU自由軟件的文件壓縮程序。它最早由Jean-loup Gailly和Mark Adler創(chuàng)建,用于UNⅨ系統(tǒng)的文件壓縮。我們在Li...

    jzzlee 評論0 收藏0
  • 前端性能優(yōu)化gzip

    摘要:客戶端請求頭聲明瀏覽器支持的壓縮方式,服務端配置啟用壓縮,壓縮的文件類型,壓縮方式。建議設置成大于的字節(jié)數(shù),小于可能會越壓越大。 背景 如果你是個前端開發(fā)人員,你肯定知道線上環(huán)境要把js,css,圖片等壓縮,盡量減少文件的大小,提升響應速度,特別是對移動端,這個非常重要。 壓縮 壓縮方式 前端壓縮的方式很多,依賴java的有ant工具,前端自己打包壓縮的有grunt,gulp,webp...

    Nino 評論0 收藏0
  • PHP 進階路 - 億級 pv 網站架構實戰(zhàn)性能壓榨

    摘要:業(yè)務和架構不分家,架構是建立在對業(yè)務的理解之上的。主鍵最好保持順序遞增,隨機主鍵會導致聚簇索引樹頻繁分裂,隨機增多,數(shù)據(jù)離散,性能下降。沒有索引的更新,可能會導致全表數(shù)據(jù)都被鎖住。 本博客并非全部原創(chuàng),其實是一個知識的歸納和匯總,里面我引用了很多網上、書上的內容。也給出了相關的鏈接。 本文涉及的知識點比較多,大家可以根據(jù)關鍵字去搜索相關的內容和購買相應的書籍進行系統(tǒng)的學習。不對的地方...

    SnaiLiu 評論0 收藏0
  • 「Vue實踐」武裝你的前端項目

    摘要:所有的高階抽象組件是通過定義選項來聲明的。所以一般在生命周期或者中,需要用實例的方法清除可當你有多個時,就需要重復性勞動銷毀這件事兒。更多的配置請看雙端開啟開啟壓縮的好處是什么可以減小文件體積,傳輸速度更快。本文目錄 接口模塊處理 Vue組件動態(tài)注冊 頁面性能調試:Hiper Vue高階組件封裝 性能優(yōu)化:eventBus封裝 webpack插件:真香 本文項目基于Vue-Cli3,想知...

    曹金海 評論0 收藏0
  • [ 性能優(yōu)化 ] Yahoo前端優(yōu)化規(guī)則規(guī)則 (1)

    摘要:自己是做前端開發(fā)的,在性能方面,根據(jù)的調查,后臺只占,而前端高達之多,其中有的東西是可以優(yōu)化的。相信很多人都聽過優(yōu)化網站性能的條規(guī)則。淘寶和阿里巴巴中文站目前都是這樣做的。目前的瀏覽器都能良好地支持。 相信互聯(lián)網已經越來越成為人們生活中不可或缺的一部分。Ajax,flex等等富客戶端的應用使得人們越加幸福地體驗著許多原先只能在C/S實現(xiàn)的功能。比如Google機會已經把最基本的o...

    xiaolinbang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<