syntax = "proto3"; package envoy.config.filter.http.gzip.v2; option java_package = "io.envoyproxy.envoy.config.filter.http.gzip.v2"; option java_outer_classname = "GzipProto"; option java_multiple_files = true; import "google/protobuf/wrappers.proto"; import "validate/validate.proto"; // [#protodoc-title: Gzip] // Gzip :ref:`configuration overview `. // [#extension: envoy.filters.http.gzip] // [#next-free-field: 10] message Gzip { enum CompressionStrategy { DEFAULT = 0; FILTERED = 1; HUFFMAN = 2; RLE = 3; } message CompressionLevel { enum Enum { DEFAULT = 0; BEST = 1; SPEED = 2; } } // Value from 1 to 9 that controls the amount of internal memory used by zlib. Higher values // use more memory, but are faster and produce better compression results. The default value is 5. google.protobuf.UInt32Value memory_level = 1 [(validate.rules).uint32 = {lte: 9 gte: 1}]; // Minimum response length, in bytes, which will trigger compression. The default value is 30. google.protobuf.UInt32Value content_length = 2 [(validate.rules).uint32 = {gte: 30}]; // A value used for selecting the zlib compression level. This setting will affect speed and // amount of compression applied to the content. "BEST" provides higher compression at the cost of // higher latency, "SPEED" provides lower compression with minimum impact on response time. // "DEFAULT" provides an optimal result between speed and compression. This field will be set to // "DEFAULT" if not specified. CompressionLevel.Enum compression_level = 3 [(validate.rules).enum = {defined_only: true}]; // A value used for selecting the zlib compression strategy which is directly related to the // characteristics of the content. Most of the time "DEFAULT" will be the best choice, though // there are situations which changing this parameter might produce better results. For example, // run-length encoding (RLE) is typically used when the content is known for having sequences // which same data occurs many consecutive times. For more information about each strategy, please // refer to zlib manual. CompressionStrategy compression_strategy = 4 [(validate.rules).enum = {defined_only: true}]; // Set of strings that allows specifying which mime-types yield compression; e.g., // application/json, text/html, etc. When this field is not defined, compression will be applied // to the following mime-types: "application/javascript", "application/json", // "application/xhtml+xml", "image/svg+xml", "text/css", "text/html", "text/plain", "text/xml". repeated string content_type = 6 [(validate.rules).repeated = {max_items: 50}]; // If true, disables compression when the response contains an etag header. When it is false, the // filter will preserve weak etags and remove the ones that require strong validation. bool disable_on_etag_header = 7; // If true, removes accept-encoding from the request headers before dispatching it to the upstream // so that responses do not get compressed before reaching the filter. bool remove_accept_encoding_header = 8; // Value from 9 to 15 that represents the base two logarithmic of the compressor's window size. // Larger window results in better compression at the expense of memory usage. The default is 12 // which will produce a 4096 bytes window. For more details about this parameter, please refer to // zlib manual > deflateInit2. google.protobuf.UInt32Value window_bits = 9 [(validate.rules).uint32 = {lte: 15 gte: 9}]; }