我有一个 Web 服务以字符串格式返回 XML 值。
通过 IE9,我可以看到某些 Web 服务调用的大小高达 1MB。
我通过编辑 Metabase.xml 文件并设置以下内容在 IIS 6 中启用了压缩:
HcScriptFileExtensions = "asmx"
下
IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
我还在 IIS 管理器中网站属性的“服务”选项卡上启用了 HTTP 压缩。
我还在 Web 服务扩展中添加了 HttCompression,映射到 Windows\System32\inetsrv\文件夹中的 gzip dll。
当我调用 Web 服务时,返回的值未压缩(与之前的服务调用大小相同)。
有什么技巧可以确保 IIS 压缩 IIS 返回的字符串数据值吗?
更新: 我还按照这些链接上的说明进行操作:
http://rextang.net/blogs/work/archive/2007/09/12/5654.aspx http://blogs.msdn.com/b/rextang/archive/2007/09/13/4880187.aspx
使用IE9,我从开发人员工具中检查Web服务调用的详细 View ,我可以看到Accept-Encoding键的值为gzip/deflate。
Web 服务 SOAP XML(字符串形式)值仍未被压缩。我应该进一步关注哪些领域?
顺便说一下,我使用的是IIS6。
更新: 我检查了这个网站: http://blogs.iis.net/webtopics/archive/2009/02/24/troubleshooting-http-compression-in-iis-6-0.aspx
我正确地获得了第 1、2、3 项。
对于第 4 项,我什至尝试仅将 asmx 设置为扩展名,但无济于事。
对于第 5 项,我在子级别没有任何压缩设置。
对于第 6 项,防病毒软件不会扫描压缩目录。
对于第 7 项,我没有在执行 DLL 上传递斜杠作为参数。
对于第 8 项,我不确定在哪里/如何检查。
对于第 9 项,我已使用 fiddler 检查过,并且正确的 header 已放置在请求 header 中。
对于第 10 项,我在我的应用中没有看到任何需要触摸此项的设置。
对于第 11 项,我收到的状态代码是 200。
对于第 12 项,无需指定代理即可访问应用。
对于第 13 项,请求是一个 Web 服务。
最佳答案
安杰洛,
IIS6 上的设置组合非常敏感且无情。例如,各种可配置文件扩展名必须各自以新行开始 - 不以空格分隔。 IIS6 压缩的敏感度尤其在涉及动态生成的内容(例如从 Web 服务返回)时更是如此。
尝试以下设置,执行 IIS 重置以重新加载这些配置数据库更改,然后祈祷吧!
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="10"
HcFileExtensions="htm
html
xml
css
txt
rdf
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
cgi
exe
dll
aspx
asmx"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="10"
HcFileExtensions="htm
html
xml
css
txt
rdf
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
cgi
exe
dll
aspx
asmx"
>
</IIsCompressionScheme>
<IIsCompressionSchemes Location ="/LM/W3SVC/Filters/Compression/Parameters"
HcCacheControlHeader="max-age=86400"
HcCompressionBufferSize="8192"
HcCompressionDirectory="%windir%\IIS Temporary Compressed Files"
HcDoDiskSpaceLimiting="FALSE"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcExpiresHeader="Wed, 01 Jan 1997 12:00:00 GMT"
HcFilesDeletedPerDiskFree="256"
HcIoBufferSize="8192"
HcMaxDiskSpaceUsage="99614720"
HcMaxQueueLength="1000"
HcMinFileSizeForComp="1"
HcNoCompressionForHttp10="FALSE"
HcNoCompressionForProxies="FALSE"
HcNoCompressionForRange="FALSE"
HcSendCacheHeaders="FALSE"
>
</IIsCompressionSchemes>
关于web-services - WebService 的 IIS 压缩返回大字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959472/