- PR -

XMLを小さくするには?

投稿者投稿内容
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2002-08-01 18:04
こんにちわ。
XMLについて質問があります。
XMLをやり取りしている回線が遅く、使っている人が沢山
いるので、なるべくデータ量を減らしたいと思っています。
Delphiの画面からXMLを作成してHTTP経由でServletに
渡しています。しかし、Servletの結果が返ってこない事
が頻繁に起こるので送受信データ量を減らしたいです。
とりあえず、改行コードを取って送る事にしました。

他に何か良い方法はないでしょうか?

圧縮とかできたら良いなーと思うのですが・・・。
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2002-08-01 20:46
>渡しています。しかし、Servletの結果が返ってこない事
>が頻繁に起こるので送受信データ量を減らしたいです。
ボトルネックが本当に回線部分なのか,XML文書のせい
なのかという検証は必要だと思います.

>圧縮とかできたら良いなーと思うのですが・・・。
XMLは基本的には単なるテキストファイルなので圧縮は可能ですよ.
自動展開とかは条件によりますが.
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2002-08-01 22:36
ご回答ありがとうございます。

>>渡しています。しかし、Servletの結果が返ってこない事
>>が頻繁に起こるので送受信データ量を減らしたいです。
>ボトルネックが本当に回線部分なのか,XML文書のせい
>なのかという検証は必要だと思います.

イントラで繋げているのですが、サーバーの置いてある
イントラと別のイントラから来る場合、間の線が細いため
すごく時間が掛かる時があります。
内部イントラの場合、1秒以下で返ってくる処理も
外部のイントラから行くと、30秒掛かって返ってくる
時があります。
回線部分はどうしようもない状態です。
その為、XMLを少しでも小さくする必要があります。
Servlet側ではどんなエラーが出ても必ずxmlは返す様にしています。
返ってこない原因って何が考えられるのでしょうか?
時間が掛かりすぎて迷子になっているのでしょうか?

>>圧縮とかできたら良いなーと思うのですが・・・。
>XMLは基本的には単なるテキストファイルなので圧縮は可能ですよ.
>自動展開とかは条件によりますが.

Servletで受取ると自動解凍してくれるような都合の良い圧縮形式
はないのでしょうか?
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-08-02 12:56
HTTP の spec を読みましょう:b

とりあえず、server->client は gzip が使えます。
apache のフィルタモジュールとか。mod_gzip とかで検索を。
たかがテキストなんでかなりの改善になるはず。

# そういや @IT さんもネット負荷軽減のためにもげもげ、ってやったはりましたね

client->server は。。そんなに量は多いんですか?
hidden にすごい大量のデータをつっこんでるとか?
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-08-02 13:20
井上です。
XML 自体、もともと冗長なモノなので、それを小さくするというところに矛盾があるようにも感じられます。
ただ、どうしても XML でないと困るのであれば、しょむさんが仰っているように、gzip を使って圧縮したものを送ると効果が大きいでしょう。一般的にテキスト文書の場合、圧縮率は大きめですから。
_________________
www.kojii.net
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2002-08-02 14:02
しょむ様、井上様、ご回答ありがとうございます。

ネットワークの問題上、DBには直接繋げられないし、
Delphiとのやり取りなのでXMLしか使えません。

Delphiでgzipを解凍するにはどうしたら良いか悩み中です。


しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-08-02 14:20
あー、そうか、HTTP だけど Delphi アプリがクライアントなのね。。。
HTTP 1.1 での圧縮にマットウに対応してるクライアントなら、
下りはいけるはずなんですけどね。

ssh で portforward して圧縮かますのはどうでしょうか。

----
[SERVER] -<LAN>- [ssh forwarder-1]-<遅い接続>-[ssh-forwarder-2]-<LAN>-[CLIENT]

ssh-forwarder-1 を踏台にし、ssh-forwarder-2:80 を SERVER:80 にフォワードして、
CLIENT は ssh-forwarder-2:80 にアクセスする。
----

ssh-forwarder-1/ssh-forwarder-2 間の ssh 接続に compress を効かせればそれなりの効果が期待できそう。

もちろん金で解決するなら、経路間圧縮の効く PVN 系のソフト/ハードを使うという技もありますが。他のネットワーク通信にも使えるのがうれしいし。

[ メッセージ編集済み 編集者: しょむ 編集日時 2002-08-02 14:41 ]
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2002-08-02 18:51
確認なのですが、
小さいサイズのXMLだとレスポンスがよくて
大きいサイズのXMLだとレスポンスが悪いのでしょうか?

サイズ如何に関わらず遅い(ボトルネックが他にある)のだとしたら、
圧縮しても何の解決にもならないでしょうから
その辺をはっきりさせておいた方がいいと思います。

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