■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

monazilla Part 5

929 :899 :2008/10/01(水) 13:00:32
>>927
もう一度調べてみたんですが、要求ヘッダに

req.AutomaticDecompression = DecompressionMethods.GZip;

とGZipをリクエストしておけばほとんどの鯖はGZipで圧縮されたデータを
送信してくれるようです。

では問題は何かと言いますと、初回以降の差分要求をするときにヘッダー
に付けて送信する If-Range ヘッダーに記述する容量を、圧縮されたとき
のものにしておく必要があるようなんです。

たとえば生では10バイトのDATをGZip圧縮して送信してもらったとします。
GZip圧縮をかけた結果5バイトに圧縮されたとします。
すると次回以降差分要求をするときに If-Range ヘッダーには10バイトでは
なく5バイトと記述しておかないと正しく差分データが受信できないようなんです。
そうでないと鯖からエラーコード416が返されてしまうようです。

これは結構ゆゆしき問題なんです。
ローカルに保存したDATは当然GZip圧縮を解除した状態なので、GZip圧縮を
かけたときのサイズを If-Range ヘッダーに記述するには、圧縮されたときの
のデータサイズをDATファイルごとにどこかに記憶しておく必要があるんです。
管理が面倒になるうえにこの圧縮されたときのサイズのデータが吹き飛べば
DATは最初から再取得しなければならなくなるんですね。

GZip圧縮は綺麗さっぱり忘れて無圧縮状態でデータを送信するようにした
ほうがいいってことなんでしょうか?
あるんです。


228KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30