- 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
|