亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

解析SpringBoot項(xiàng)目開發(fā)之Gzip壓縮過程

瀏覽:2日期:2023-05-06 13:17:19

為了減少數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸量,從而減少傳輸時(shí)長(zhǎng),增加用戶體驗(yàn),瀏覽器大都是支持Gzip壓縮技術(shù)的,http的請(qǐng)求頭 Accept-Encoding:gzip, deflate 就表示這次請(qǐng)求可以接受Gzip壓縮后的數(shù)據(jù),圖片不要進(jìn)行壓縮,因?yàn)閳D片完全可以在項(xiàng)目開發(fā)中使用壓縮后的圖片。壓縮會(huì)有一定的CPU性能損耗。

下面介紹幾種 Gzip壓縮方式

1.SpringBoot開啟Gzip壓縮

在application.properties中加入如下配置:

server.compression.enabled=trueserver.compression.mime-types=application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain

壓縮前:25.3kb,50.0kb,37.5kb,5.1kb,34.7kb

解析SpringBoot項(xiàng)目開發(fā)之Gzip壓縮過程

壓縮后:6.4kb,11.7kb,8.3kb,1.3kb,34.7kb

解析SpringBoot項(xiàng)目開發(fā)之Gzip壓縮過程

壓縮后可看到文件有4倍左右的差距,能大大減少網(wǎng)絡(luò)傳輸量,頁面加載速度加快

2.Tomcat開啟Gzip壓縮

tomcat中使用gzip需要進(jìn)行配置,在server.xml中,在Connector標(biāo)簽中加入如下屬性

compression='on' compressionMinSize='2048' compressableMimeType='text/html,text/css,text/javascript'

3.Nginx開啟Gzip壓縮

gzip on;gzip_min_length 1k;gzip_buffers 4 16k;#gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_vary off;

重載nginx即可第1行:開啟Gzip第2行:不壓縮臨界值,大于1K的才壓縮,一般不用改第3行:buffer,不用改第4行:用了反向代理的話,末端通信是HTTP/1.0,有需求的應(yīng)該也不用看我這科普文了;有這句的話注釋了就行了,默認(rèn)是HTTP/1.1第5行:壓縮級(jí)別,1-10,數(shù)字越大壓縮的越好,時(shí)間也越長(zhǎng),看心情隨便改吧第6行:進(jìn)行壓縮的文件類型,缺啥補(bǔ)啥就行了,JavaScript有兩種寫法,最好都寫上吧,總有人抱怨js文件沒有壓縮,其實(shí)多寫一種格式就行了第7行:跟Squid等緩存服務(wù)有關(guān),on的話會(huì)在Header里增加'Vary: Accept-Encoding',我不需要這玩意,自己對(duì)照情況看著辦吧

4.GZIPOutputStream,GZIPInputStream壓縮與解壓

import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;import org.apache.commons.codec.binary.StringUtils; public class GZIPUtils { public static final String GZIP_ENCODE_UTF_8 = 'UTF-8'; public static final String GZIP_ENCODE_ISO_8859_1 = 'ISO-8859-1'; /** * 字符串壓縮為GZIP字節(jié)數(shù)組 * @param str * @return */ public static byte[] compress(String str) { return compress(str, GZIP_ENCODE_UTF_8); } /** * 字符串壓縮為GZIP字節(jié)數(shù)組 * @param str * @param encoding * @return */ public static byte[] compress(String str, String encoding) { if (str == null || str.length() == 0) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip; try { gzip = new GZIPOutputStream(out); gzip.write(str.getBytes(encoding)); gzip.close(); } catch (IOException e) { e.printStackTrace(); } return out.toByteArray(); } /** * GZIP解壓縮 * @param bytes * @return */ public static byte[] uncompress(byte[] bytes) { if (bytes == null || bytes.length == 0) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(bytes); try { GZIPInputStream ungzip = new GZIPInputStream(in); byte[] buffer = new byte[256]; int n; while ((n = ungzip.read(buffer)) >= 0) {out.write(buffer, 0, n); } } catch (IOException e) { e.printStackTrace(); } return out.toByteArray(); } /** * 解壓并返回String * @param bytes * @return */ public static String uncompressToString(byte[] bytes) { return uncompressToString(bytes, GZIP_ENCODE_UTF_8); } /** * 解壓 * @param bytes * @param encoding * @return */ public static String uncompressToString(byte[] bytes, String encoding) { if (bytes == null || bytes.length == 0) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(bytes); try { GZIPInputStream ungzip = new GZIPInputStream(in); byte[] buffer = new byte[256]; int n; while ((n = ungzip.read(buffer)) >= 0) {out.write(buffer, 0, n); } return out.toString(encoding); } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { String str = '%5B%7B%22lastUpdateTime%22%3A%222011-10-28+9%3A39%3A41%22%2C%22smsList%22%3A%5B%7B%22liveState%22%3A%221'; System.out.println('原長(zhǎng)度:' + str.length()); System.out.println('壓縮后字符串:' + GZIPUtils.compress(str).toString().length()); System.out.println('解壓縮后字符串:' + StringUtils.newStringUtf8(GZIPUtils.uncompress(GZIPUtils.compress(str)))); System.out.println('解壓縮后字符串:' + GZIPUtils.uncompressToString(GZIPUtils.compress(str))); }}

到此這篇關(guān)于SpringBoot項(xiàng)目開發(fā)之Gzip壓縮過程的文章就介紹到這了,更多相關(guān)SpringBoot Gzip壓縮內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 九九色综合 | 国产美女视频一区 | 亚洲图片在线播放 | 69精品免费视频 | 国产超级乱淫视频播放 | 一区二区国产在线观看 | xxx国产精品视频 | 亚洲一区二区三区在线免费观看 | 国产精品99在线观看 | 免费看欧美毛片大片免费看 | 国产91在线看 | 亚洲综合国产 | 国产短视频精品一区二区三区 | 亚洲欧美国产日产综合不卡 | 毛片免费观看日本中文 | 国产香蕉视频 | 国产国产人在线成免费视频69 | 色多多在深夜释放自己黄 | 国产免费一区不卡在线 | 日本美女一区二区 | 久久综合九色综合欧美9v777 | 亚洲国产九九精品一区二区 | 久久精品国产99久久6动漫欧 | 欧美精品一区在线看 | 日韩在线观看网址 | 久久www免费人成精品香蕉 | 成人在线你懂的 | 在线视频久 | 欧美毛片免费观看 | 国产亚洲综合一区二区在线 | 东京道区二区三区 | 久久婷婷五夜综合色频 | 久久青青草原精品国产不卡 | 亚洲精品一区二区观看 | 国产极品嫩模大尺度福利视频 | 免费国产精成人品 | 搜索毛片 | 又黄又爽的成人免费网站 | 香蕉网站狼人久久五月亭亭 | 黄色无遮挡 | 国产4p露脸在线观看 |