在Service Fabric Service中启用每个端点的gzip压缩

时间:2019-01-09 16:59:20

标签: c# gzip azure-service-fabric

我们的应用程序使用Service Fabric作为其骨干,而我们的微服务是Service Fabric Services。在前端使用Lighthouse进行了一些审核之后,我看到列出了对enable text based compression的建议,并开始研究如何将gzip添加到某些响应中。

对于我们的Node服务器,我只是添加了compression中间件并使用了它。

对于其他服务,我进入了Web.config并添加了以下内容:

<urlCompression doStaticCompression="true" doDynamicCompression="true"/>

<httpCompression>
  <dynamicTypes>
    <clear />
    <add enabled="true"  mimeType="application/json"/>
  </dynamicTypes>
  <staticTypes>
    <clear />
    <add enabled="true"  mimeType="application/json"/>
  </staticTypes>
</httpCompression>

重新加载我的Web应用程序后,我确实注意到响应现在已经压缩,但是我不想压缩所有响应。

设置任何端点时,请遵循以下格式:

[HttpGet]
[Route("{customer}/items")]
[Authorize]
public Task<ItemsModel> Get()
{
    return _itemsService.GetAsync();
}

有没有一种方法可以启用基于端点的压缩而不是基于服务的压缩?

1 个答案:

答案 0 :(得分:0)

这是过程;

  1. 编辑您的ServiceDefinition.csdef文件以将其包含在WebRole标记中:
  

<Startup> <Task commandLine="EnableCompression.cmd" executionContext="elevated" taskType="simple"></Task> </Startup>

  1. 在您的网络角色中,创建一个文本文件并将其保存为“ EnableCompression.cmd”

  2. 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://basecamp.kony.com/s/question/0D56A00000RbtbBSAR/how-to-enable-gzip-compression-in-mobile-fabric

https://code.i-harness.com/en/q/2a58dd

How to enable gzip HTTP compression on Windows Azure dynamic content