摘要:客戶端請求頭聲明瀏覽器支持的壓縮方式,服務端配置啟用壓縮,壓縮的文件類型,壓縮方式。建議設置成大于的字節數,小于可能會越壓越大。
背景
如果你是個前端開發人員,你肯定知道線上環境要把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了,現在來說一下幾種不同的環境下的服務端如何配置
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的插件
tomcattomcat的配置如下
找到tomcat的server.xml文件,找到其中Connector節點然后進行配置修改,具體配置如下
參數說明:
compression="on" 打開壓縮功能
compressionMinSize="2048" 啟用壓縮的輸出內容大小,當被壓縮對象的大小>=該值時才會被壓縮,這里面默認為2KB
noCompressionUserAgents="gozilla, traviata" 對于以下的瀏覽器,不啟用壓縮
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 壓縮類型
注意:tomcat7以后,js文件的mimetype類型變為了application/javascript,而在tomcat7以下則為text/javascript;具體的tomcat7定義的類型可以在:conf/web.xml文件中找到。
可以在web.xml下搜索,如我搜索javascript會找到如下代碼
js application/javascript
切記上面的類型不能配置錯了,如果配置錯了壓縮是不會起作用的。
nginxgzip使用環境:http,server,location,if(x),一般把它定義在nginx.conf的http{…..}之間
gzip on
on為啟用,off為關閉
gzip_min_length 1k
設置允許壓縮的頁面最小字節數,頁面字節數從header頭中的Content-Length中進行獲取。默認值是0,不管頁面多大都壓縮。建議設置成大于1k的字節數,小于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’被系統強制啟用
gzip_http_version 1.1
識別http協議的版本,早起瀏覽器可能不支持gzip自解壓,用戶會看到亂碼
gzip_vary on
啟用應答頭"Vary: Accept-Encoding"
gzip_proxied off
nginx做為反向代理時啟用,off(關閉所有代理結果的數據的壓縮),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參數來禁止gzip壓縮 )指定哪些不需要gzip壓縮的瀏覽器(將和User-Agents進行匹配),依賴于PCRE庫
以上代碼可以插入到 http {...}整個服務器的配置里,也可以插入到虛擬主機的 server {...}或者下面的location模塊內
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90409.html
摘要:協議上的編碼是一種用來改進應用程序性能的技術。目前主流的瀏覽器等都支持該協議。啟用或禁用響應。可接受的值范圍為到。設置將被壓縮的響應的最小長度。長度僅由響應頭字段確定。而里面的只是表示前端用戶瀏覽器支持的壓縮方式。 gzip是GNUzip的縮寫,它是一個GNU自由軟件的文件壓縮程序。它最早由Jean-loup Gailly和Mark Adler創建,用于UNⅨ系統的文件壓縮。我們在Li...
摘要:客戶端請求頭聲明瀏覽器支持的壓縮方式,服務端配置啟用壓縮,壓縮的文件類型,壓縮方式。建議設置成大于的字節數,小于可能會越壓越大。 背景 如果你是個前端開發人員,你肯定知道線上環境要把js,css,圖片等壓縮,盡量減少文件的大小,提升響應速度,特別是對移動端,這個非常重要。 壓縮 壓縮方式 前端壓縮的方式很多,依賴java的有ant工具,前端自己打包壓縮的有grunt,gulp,webp...
摘要:業務和架構不分家,架構是建立在對業務的理解之上的。主鍵最好保持順序遞增,隨機主鍵會導致聚簇索引樹頻繁分裂,隨機增多,數據離散,性能下降。沒有索引的更新,可能會導致全表數據都被鎖住。 本博客并非全部原創,其實是一個知識的歸納和匯總,里面我引用了很多網上、書上的內容。也給出了相關的鏈接。 本文涉及的知識點比較多,大家可以根據關鍵字去搜索相關的內容和購買相應的書籍進行系統的學習。不對的地方...
摘要:所有的高階抽象組件是通過定義選項來聲明的。所以一般在生命周期或者中,需要用實例的方法清除可當你有多個時,就需要重復性勞動銷毀這件事兒。更多的配置請看雙端開啟開啟壓縮的好處是什么可以減小文件體積,傳輸速度更快。本文目錄 接口模塊處理 Vue組件動態注冊 頁面性能調試:Hiper Vue高階組件封裝 性能優化:eventBus封裝 webpack插件:真香 本文項目基于Vue-Cli3,想知...
摘要:自己是做前端開發的,在性能方面,根據的調查,后臺只占,而前端高達之多,其中有的東西是可以優化的。相信很多人都聽過優化網站性能的條規則。淘寶和阿里巴巴中文站目前都是這樣做的。目前的瀏覽器都能良好地支持。 相信互聯網已經越來越成為人們生活中不可或缺的一部分。Ajax,flex等等富客戶端的應用使得人們越加幸福地體驗著許多原先只能在C/S實現的功能。比如Google機會已經把最基本的o...
閱讀 2043·2021-09-07 10:14
閱讀 1478·2019-08-30 15:53
閱讀 2270·2019-08-30 12:43
閱讀 2861·2019-08-29 16:37
閱讀 754·2019-08-26 13:29
閱讀 2000·2019-08-26 13:28
閱讀 437·2019-08-23 18:33
閱讀 3500·2019-08-23 16:09