在Service Fabric服务中为每个端点启用gzip压缩
在Service Fabric服务中为每个端点启用gzip压缩
我们的应用程序以 Service Fabric 作为其基础,我们的微服务是 Service Fabric 服务。在前端使用 Lighthouse 进行一些审计后,我发现推荐启用文本压缩,并开始研究如何在一些响应中添加 gzip。
对于我们的 Node 服务器,我只需添加 compression 中间件并使用它。
对于其他服务,我进入 Web.config 并添加了以下内容:
重新加载我的 Web 应用程序后,我确实注意到响应现在是压缩的,但我不想压缩所有的响应。
当我设置任何一个端点时,我遵循以下格式:
[HttpGet]
[Route("{customer}/items")]
[Authorize]
public Task
{
return _itemsService.GetAsync();
}
有没有一种方法可以按端点启用压缩,而不是按服务启用?
问题的原因是需要在Service Fabric服务的每个端点启用gzip压缩。
解决方法如下:
1. 编辑ServiceDefinition.csdef文件,在WebRole标签中添加以下内容:
2. 在Web角色中创建一个文本文件,将其保存为“EnableCompression.cmd”。
3. 编辑EnableCompression.cmd文件,将以下内容添加到文件中:
%windir%\system32\inetsrv\appcmd set config /section:urlCompression /doDynamicCompression:True /commit:apphost %windir%\system32\inetsrv\appcmd set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/json; charset=utf-8',enabled='True']" /commit:apphost
通过上述简单的步骤,可以在Azure的Web角色中启用对返回的JSON进行动态压缩。
来源:
- [https://cloudmonix.com/blog/how-to-enable-gzip-http-compression-on-windows-azure-endpoint/](https://cloudmonix.com/blog/how-to-enable-gzip-http-compression-on-windows-azure-endpoint/)
- [https://basecamp.kony.com/s/question/0D56A00000RbtbBSAR/how-to-enable-gzip-compression-in-mobile-fabric](https://basecamp.kony.com/s/question/0D56A00000RbtbBSAR/how-to-enable-gzip-compression-in-mobile-fabric)
- [https://code.i-harness.com/en/q/2a58dd](https://code.i-harness.com/en/q/2a58dd)
- [https://stackoverflow.com/questions/2775261](https://stackoverflow.com/questions/2775261)