PageSourceSearch

https://gowind.cloud/assets/plugins-compress.html-JS9VzNtm.js

js gowind.cloud collected 2026-10-05 22:13:34 UTC 11,128 bytes, 29 lines download raw bytes

1import{_ as p,c as i,a as d,b as n,d as t,w as e,r as o,o as c,e as l}from"./app-B7HVJ7q3.js";const r={};function u(m,s){const a=o("RouteLink");return c(),i("div",null,[s[3]||(s[3]=d(`<h1 id="压缩与序列化插件" tabindex="-1"><a class="header-anchor" href="#压缩与序列化插件"><span>压缩与序列化插件</span></a></h1><p>go-wind-plugins 提供压缩和序列化辅助插件,减少网络传输体积和存储空间。</p><h2 id="一、压缩插件" tabindex="-1"><a class="header-anchor" href="#一、压缩插件"><span>一、压缩插件</span></a></h2><h3 id="_1-1-适配器列表" tabindex="-1"><a class="header-anchor" href="#_1-1-适配器列表"><span>1.1 适配器列表</span></a></h3><table><thead><tr><th>适配器</th><th>导入路径</th><th>压缩率</th><th>速度</th></tr></thead><tbody><tr><td>Gzip</td><td><code>plugins/compress/gzip</code></td><td>高</td><td>中</td></tr><tr><td>Snappy</td><td><code>plugins/compress/snappy</code></td><td>中</td><td>极快</td></tr><tr><td>LZ4</td><td><code>plugins/compress/lz4</code></td><td>中</td><td>极快</td></tr><tr><td>Zstd</td><td><code>plugins/compress/zstd</code></td><td>高</td><td>快</td></tr><tr><td>Brotli</td><td><code>plugins/compress/brotli</code></td><td>最高</td><td>慢</td></tr></tbody></table><h3 id="_1-2-使用方式" tabindex="-1"><a class="header-anchor" href="#_1-2-使用方式"><span>1.2 使用方式</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token keyword">import</span> compressPlugin <span class="token string">&quot;github.com/tx7do/go-wind-plugins/compress/gzip&quot;</span></span>
2<span class="line"></span>
3<span class="line">compressor <span class="token operator">:=</span> compressPlugin<span class="token punctuation">.</span><span class="token function">New</span><span class="token punctuation">(</span></span>
4<span class="line">    compressPlugin<span class="token punctuation">.</span><span class="token function">WithLevel</span><span class="token punctuation">(</span><span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">,</span>        <span class="token comment">// 1-9</span></span>
5<span class="line"><span class="token punctuation">)</span></span>
6<span class="line"></span>
7<span class="line"><span class="token comment">// 压缩</span></span>
8<span class="line">compressed<span class="token punctuation">,</span> <span class="token boolean">_</span> <span class="token operator">:=</span> compressor<span class="token punctuation">.</span><span class="token function">Compress</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span></span>
9<span class="line"></span>
10<span class="line"><span class="token comment">// 解压</span></span>
11<span class="line">original<span class="token punctuation">,</span> <span class="token boolean">_</span> <span class="token operator">:=</span> compressor<span class="token punctuation">.</span><span class="token function">Decompress</span><span class="token punctuation">(</span>compressed<span class="token punctuation">)</span></span>
12<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_1-3-http-响应压缩" tabindex="-1"><a class="header-anchor" href="#_1-3-http-响应压缩"><span>1.3 HTTP 响应压缩</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="prismjs" data-ext="go"><pre><code><span class="line"><span class="token comment">// Transport 自动支持 Accept-Encoding: gzip</span></span>
13<span class="line"><span class="token comment">// 客户端发送 Accept-Encoding: gzip</span></span>
14<span class="line"><span class="token comment">// 服务端自动压缩响应体</span></span>
15<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_1-4-kafka-消息压缩" tabindex="-1"><a class="header-anchor" href="#_1-4-kafka-消息压缩"><span>1.4 Kafka 消息压缩</span></a></h3><div class="language-yaml line-numbers-mode" data-highlighter="prismjs" data-ext="yml"><pre><code><span class="line"><span class="token key atrule">
15broker</span><span class="token punctuation">:</span></span>
16<span class="line">  <span class="token key atrule">kafka</span><span class="token punctuation">:</span></span>
17<span class="line">    <span class="token key atrule">producer</span><span class="token punctuation">:</span></span>
18<span class="line">      <span class="token key atrule">compression</span><span class="token punctuation">:</span> zstd         <span class="token comment"># none | gzip | snappy | lz4 | zstd</span></span>
19<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="二、序列化对比" tabindex="-1"><a class="header-anchor" href="#二、序列化对比"><span>二、序列化对比</span></a></h2><table><thead><tr><th>格式</th><th>体积</th><th>速度</th><th>可读性</th><th>Schema</th></tr></thead><tbody><tr><td>JSON</td><td>大</td><td>快</td><td>是</td><td>无</td></tr><tr><td>Protobuf</td><td>最小</td><td>最快</td><td>否</td><td>.proto</td></tr><tr><td>MessagePack</td><td>小</td><td>快</td><td>否</td><td>无</td></tr><tr><td>YAML</td><td>中</td><td>慢</td><td>是</td><td>无</td></tr><tr><td>TOML</td><td>中</td><td>慢</td><td>是</td><td>无</td></tr><tr><td>Avro</td><td>小</td><td>快</td><td>否</td><td>.avsc</td></tr></tbody></table><h2 id="三、schema-演进" tabindex="-1"><a class="header-anchor" href="#三、schema-演进"><span>三、Schema 演进</span></a></h2><h3 id="protobuf-推荐" tabindex="-1"><a class="header-anchor" href="#protobuf-推荐"><span>Protobuf(推荐)</span></a></h3><div class="language-protobuf line-numbers-mode" data-highlighter="prismjs" data-ext="protobuf"><pre><code><span class="line"><span class="token comment">// user.proto</span></span>
20<span class="line"><span class="token keyword">syntax</span> <span class="token operator">=</span> <span class="token string">&quot;proto3&quot;</span><span class="token punctuation">;</span></span>
21<span class="line"></span>
22<span class="line"><span class="token keyword">message</span> <span class="token class-name">User</span> <span class="token punctuation">{</span></span>
23<span class="line">    <span class="token builtin">string</span> id <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
24<span class="line">    <span class="token builtin">string</span> name <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span></span>
25<span class="line">    <span class="token builtin">string</span> email <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">;</span></span>
26<span class="line">    <span class="token comment">// 新增字段使用新编号,不破坏兼容性</span></span>
27<span class="line">    <span class="token builtin">string</span> phone <span class="token operator">=</span> <span class="token number">4</span><span class="token punctuation">;</span></span>
28<span class="line"><span class="token punctuation">}</span></span>
29<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="兼容性规则" tabindex="-1"><a class="header-anchor" href="#兼容性规则"><span>兼容性规则</span></a></h3><table><thead><tr><th>操作</th><th>兼容性</th></tr></thead><tbody><tr><td>新增字段</td><td>向前兼容</td></tr><tr><td>删除字段</td><td>向后兼容(需保留字段号)</td></tr><tr><td>修改字段类型</td><td>不兼容</td></tr><tr><td>修改字段编号</td><td>不兼容</td></tr></tbody></table><h2 id="相关文档" tabindex="-1"><a class="header-anchor" href="#相关文档"><span>相关文档</span></a></h2>`,19)),n("ul",null,[n("li",null,[t(a,{to:"/framework/plugins-encoding.html"},{default:e(()=>[...s[0]||(s[0]=[l("编码解码插件",-1)])]),_:1})]),n("li",null,[t(a,{to:"/framework/plugins-broker.html"},{default:e(()=>[...s[1]||(s[1]=[l("消息中间件插件",-1)])]),_:1})]),n("li",null,[t(a,{to:"/framework/plugins-intro.html"},{default:e(()=>[...s[2]||(s[2]=[l("插件总览",-1)])]),_:1})])])])}const k=p(r,[["render",u]]),b=JSON.parse('{"path":"/framework/plugins-compress.html","title":"压缩与序列化插件","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"一、压缩插件","slug":"一、压缩插件","link":"#一、压缩插件","children":[{"level":3,"title":"1.1 适配器列表","slug":"_1-1-适配器列表","link":"#_1-1-适配器列表","children":[]},{"level":3,"title":"1.2 使用方式","slug":"_1-2-使用方式","link":"#_1-2-使用方式","children":[]},{"level":3,"title":"1.3 HTTP 响应压缩","slug":"_1-3-http-响应压缩","link":"#_1-3-http-响应压缩","children":[]},{"level":3,"title":"1.4 Kafka 消息压缩","slug":"_1-4-kafka-消息压缩","link":"#_1-4-kafka-消息压缩","children":[]}]},{"level":2,"title":"二、序列化对比","slug":"二、序列化对比","link":"#二、序列化对比","children":[]},{"level":2,"title":"三、Schema 演进","slug":"三、schema-演进","link":"#三、schema-演进","children":[{"level":3,"title":"Protobuf(推荐)","slug":"protobuf-推荐","link":"#protobuf-推荐","children":[]},{"level":3,"title":"兼容性规则","slug":"兼容性规则","link":"#兼容性规则","children":[]}]},{"level":2,"title":"相关文档","slug":"相关文档","link":"#相关文档","children":[]}
29],"git":{"updatedTime":1782048507000,"contributors":[{"name":"Bobo","username":"Bobo","email":"[email protected]","commits":1,"url":"https://github.com/Bobo"}],"changelog":[{"hash":"26902396683277256db28022df417e6070907850","time":1782048507000,"email":"[email protected]","author":"Bobo","message":"docs(bootstrap): 添加 Bootstrap 框架相关文档"}]},"filePathRelative":"framework/plugins-compress.md"}');export{k as comp,b as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.