不同的编程语言和框架在压缩时会生成不同的配置文件。使用一致的方式为应用程序添加压缩过滤器(例如配置最小压缩字节、压缩级别、哪些响应默认情况下会被压缩等),可以更好地维护和管理压缩配置。本文介绍如何在ASM中使用ASMCompressor定义应用服务间调用的压缩配置。
前提条件
已添加ACK集群到ASM实例,且ASM实例版本为1.18.0.104及以上。具体操作,请参见添加集群到ASM实例和升级ASM实例。
功能介绍
网格代理支持Gzip和Brotli两种算法。
Gzip是一种广泛使用的压缩算法,被许多Web服务器和浏览器支持。Gzip压缩算法以较高的压缩比和较快的压缩速度而闻名,通常用于压缩静态和动态内容。
Brotli是一种先进的压缩算法,可以提供更高的压缩比和更快的解压速度,并在Web领域广泛使用。Brotli压缩算法通常用于压缩静态内容,例如HTML、CSS和JavaScript文件。
Brotli相对于Gzip提供了更高的压缩比,但可能会对压缩速度产生一些影响。您可以根据实际的应用场景和性能需求选择压缩算法。
启用及验证Gzip压缩
步骤一:记录在未启用压缩时返回响应的大小
获取ASM网关地址。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在入口网关页面,获取服务地址。
在浏览器地址栏,输入
http://{ASM网关地址}/productpage
,访问Bookinfo应用。打开浏览器的开发者模式,查看productpage请求返回响应的大小。
如下图所示,返回响应的大小为5.5 KB。
步骤二:启用Gzip压缩
使用以下内容,创建ingressgateway-gzip.yaml文件。
关于字段的说明,请参见ASMCompressor CRD说明。
执行以下命令,启用Gzip压缩功能。
kubectl apply -f ingressgateway-gzip.yaml
步骤三:查看启用Gzip压缩后的效果
在浏览器地址栏,输入
http://{ASM网关地址}/productpage
,访问Bookinfo应用。打开浏览器的开发者模式,查看productpage请求返回响应的大小。
如下图所示,返回响应的大小从原来的5.5 KB变为1.8 KB,表明Gzip压缩配置生效。
启用及验证Brotli压缩
修改名称为bookinfo的VirtualService。
在bookinfo.yaml文件的
spec.http
下添加如下内容。- directResponse: body: string: >- Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! status: 200 match: - uri: prefix: /helloworld
执行以下命令,部署VirtualService。
kubectl apply -f bookinfo.yaml
启用Brotli压缩。
使用以下内容,创建ingressgateway-brotli.yaml。
关于字段的说明,请参见ASMCompressor CRD说明。
执行以下命令,启用Brotli压缩功能。
kubectl apply -f ingressgateway-brotli.yaml
验证Brotli压缩是否生效。
执行以下命令,将请求
/helloworld
路径返回的内容,使用Brotli压缩,然后存放到out.br文件中。curl -I -H "Accept-Encoding: br" http://{ASM网关地址}/helloworld > out.br
安装Brotli。
macOS:在Brew中执行
brew install brotli
命令进行安装。Windows:在brotli页面进行安装。
在Brotli中执行以下命令,解压out.br文件。
brotli -d out.br
可以看到解压出来的文件out以及内容,表明Brotli压缩配置生效。
- 本页导读 (1)