- PR -

WEBサービスの圧縮について

1
投稿者投稿内容
jojo
会議室デビュー日: 2007/03/19
投稿数: 16
投稿日時: 2007-05-02 15:07
Windows2003Server + IIS6.0でWeb Serviceを使って(Visual Studio .Net2005)
開発しています。

帯域節約を目的として、Webサービスのレスポンスを圧縮したいと思っているのですが、
具体的な方法をご存知の方、ご教授願えますでしょうか。
以下のサイトを参考にしてみたのですが、IISのログを見る限りでは
圧縮は実現できていません。
静的なファイル(*.txt)の圧縮は確認しています。

http://support.microsoft.com/default.aspx?scid=kb;ja;234497
上記を参考にして、対象の拡張子にasmxを追加したのですが、
それだけだと圧縮されないようです。

IISの設定以外に、コーディング上での対処が必要になるのでしょうか?

未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-05-02 18:19
リファレンスは読みました?
静的ファイルと動的ファイルの指定には違いがあるようですけど?
HTTP 圧縮を使用する (IIS 6.0)
jojo
会議室デビュー日: 2007/03/19
投稿数: 16
投稿日時: 2007-05-02 18:59
以下の記事の通りには設定しているのですが、、

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ja/library/iis/d52ff289-94d3-4085-bc4e-24eb4f312e0e.mspx?mfr=true
引用:

[サービス] タブをクリックし、[HTTP 圧縮] セクションで [アプリケーション ファイルを圧縮する] チェック ボックスをオンにして、動的ファイルの圧縮を有効にします。


がんふぃーるど
ベテラン
会議室デビュー日: 2006/06/05
投稿数: 58
お住まい・勤務地: さいたま
投稿日時: 2007-05-02 20:30
がんふぃーるどです。お世話さまです。

IIS で圧縮するファイルの種類をカスタマイズする (IIS 6.0)
の「サーバー全体の動的圧縮の構成にファイル タイプを追加するには」
というのは設定しましたか?
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-05-02 22:53
呼び出し側で圧縮の自動解凍を有効に設定してますか?
確かデフォルトでは無効だったような気がします。
zqn
会議室デビュー日: 2007/05/07
投稿数: 1
投稿日時: 2007-05-07 12:15
コード:
 

IIS 6.0 設定ファイル
C:\WINDOWS\system32\inetsrv\MetaBase.xml

<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="0"
HcFileExtensions="htm
html
txt"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
asmx"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="0"
HcFileExtensions="htm
html
txt"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
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="TRUE"
HcNoCompressionForProxies="TRUE"
HcNoCompressionForRange="FALSE"
HcSendCacheHeaders="FALSE"
>
</IIsCompressionSchemes>

--------------------------------------------------------------------------

WebServiceプログラム側
Global.asax.vb

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' 各要求の開始時に呼び出されます。
Dim acceptEncoding As String = Request.Headers.Item("Accept-Encoding")
Debug.WriteLine ( acceptEncoding )
End Sub


--------------------------------------------------------------------------

クライアント側:

    Dim srv As WebServiceTest.ServiceTest = Nothing
Try

srv = New WebServiceTest.ServiceTest
Debug.Write("Default WebService.EnableDecompression : " & srv.EnableDecompression)
srv.EnableDecompression = True '' 重要
srv.Url = "http://localhost/XXServiceTest/ServiceTest.asmx"

'' 解凍不要 …(省略)
dim ds As System.Data.DataSet = srv.CallFunction (xxxxx)
      '' ......................

Catch ex As Exception
Finally
If srv Is Nothing = False Then
srv.Dispose() : srv = Nothing
End If
End Try






[ メッセージ編集済み 編集者: zqn 編集日時 2007-05-07 18:14 ]
jojo
会議室デビュー日: 2007/03/19
投稿数: 16
投稿日時: 2007-05-08 13:23
解決しました。
ご返答くださった方々、ありがとうございました。
下記が決め手となりました。

>srv.EnableDecompression = True
1

スキルアップ/キャリアアップ(JOB@IT)