当前位置: 首页 > 面试题库 >

如何在Windows Azure动态内容上启用gzip HTTP压缩

相诚
2023-03-14
问题内容

我一直在尝试在Windows Azure托管的WCF Restful服务上启用gzip HTTP压缩失败,该服务仅从GET和POST请求返回JSON。

我已经尝试了很多事情,以至于很难列出所有这些东西,现在我意识到我一直在处理有冲突的信息(关于天蓝色的旧版本等),所以认为最好从一开始就开始!

我正在使用Visual Studio 2008,使用Visual Studio的2010年2月工具。

因此,根据以下链接 ..

.. HTTP压缩现已启用。我在下一页使用了建议(仅URL压缩建议)。

http://blog.smarx.com/posts/iis-compression-in-windows-
azure

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

..但我没有压缩。我不知道 urlCompressionhttpCompression有
什么区别是没有帮助的。我试图找出答案,但无济于事!

Visual Studio工具是在支持压缩的Azure版本之前发布的,这可能会成为问题吗?我在某处读到过,您可以使用最新的工具选择发布时要使用的Azure
OS版本…但是我不知道这是真的,如果是的话,我找不到位置选择。我可以使用启用HTTP之前的版本吗?

我也尝试过吹风机http压缩模块,但没有结果。

是否有人对如何实现这一目标有最新的建议?即与当前版本的Azure OS相关的建议。

干杯!

史蒂文

更新: 我编辑了上面的代码以修复web.config片段中的类型。

更新2: 测试使用下面的答案显示的URL
whatsmyip的答复是表示在没有经过任何压缩正在返回从我service.svc我的JSON响应,但静态的HTML页面 ARE
被用gzip压缩返回。任何有关如何获取JSON响应进行压缩的建议将不胜感激!

更新3: 尝试了大于256KB的JSON响应,以查看问题是否是由于JSON响应小于此响应,如以下注释中所述。不幸的是,响应仍未压缩。


问题答案:

嗯,这花了 长时间……但是我终于解决了这个问题,我想将答案发布给其他苦苦挣扎的人。解决方案非常简单,我已经证实它确实可以正常工作!!

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

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

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

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

..就是这样!做完了!这可以对网络角色返回的json进行动态压缩,我认为我在某个地方读到的MIME类型很奇怪,因此请确保您完全复制了代码。



 类似资料:
  • 本文向大家介绍在Apache服务器上启用GZip压缩静态内容的方法,包括了在Apache服务器上启用GZip压缩静态内容的方法的使用技巧和注意事项,需要的朋友参考一下 为了优化网站的访问速度,我们可以通过对静态内容进行压缩,从而减少网页加载的时间,大大节省用户的带宽。在这篇文章中,我将介绍如何使用Apache和.htaccess文件进行静态内容压缩。 首先让我介绍一下,我们可以使用两种不同的方法压

  • 我有一个页面,需要动态创建一个iframe并将其粘贴到页面上的div中。我创建iframe的方式如下: 根据某些条件,我需要:A)将iframe src设置为其他页面,或者B)动态地向iframe添加一些HTML。 我有选项A的罚款,但选项B抛出了安全错误: 在尝试设置HTML之前,是否需要在动态iframe上设置?我怎么会那么做呢?有没有更简单的方法将动态内容附加到动态iframe中? 提前道谢

  • 注意:用户界面已经在 Dreamweaver CC 和更高版本中做了简化。因此,您可能在 Dreamweaver CC 和更高版本中找不到本文中描述的一些选项。有关详细信息,请参阅此文章。 关于动态内容 通过对提供内容的服务器行为进行编辑,可以更改页面上的动态内容。例如,您可以编辑记录集服务器行为,以便向页面提供更多的记录。 在“服务器行为”面板中列出了页面上的动态内容。例如,如果向页面中添加了某

  • 问题内容: 我可以使用启用自动重启功能,但是在停止容器后,如何关闭该属性? 我通常会运行网络服务器,通常会映射端口80: 但是有时候我想运行映像的较新版本,但又想保留旧容器。问题是,如果有多个带有的容器,则只会启动其中一个(随机?),因为它们都争用主机上的端口80。 问题答案: 您可以使用该选项(如@Shibashis所述),或更新重启策略(这需要docker 1.11或更高版本); 请参阅文档以

  • 问题内容: 偶然发现了这个很棒的文本编辑器,facebook的draft.js。我尝试遵循github中的示例,但我想创建一个具有内容的编辑器,而不是一个空的编辑器。 运行它,但出现错误,提示“未捕获的TypeError:contentState.getBlockMap不是函数” 问题答案: EditorState.createWithContent的第一个参数是,而不是字符串。您需要导入Cont