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

monazilla Part 3

780 :デフォルトの名無しさん :02/12/13 14:25
スレのGETの仕方なのだけど、以下のロジックに欠陥はない?

ローカル.datのmtimeは、リモート.datのmtimeに合わせておく。
で、ローカル.datのラスト10レス分を切り出しておく

GET /bbs/dat/key.dat HTTP/1.1
Host: xxx.2ch.net
User-Agent: Monazilla/1.0 (omaemona)
If-Modified-Since: (ローカル.datの時刻)
Range: bytes=(最新10レスの位置)-

if (status == 304) {何もしない(変更無し)}
else if (status == 200) {今回取得したもので、全部差し替え}
else if (status == 206)
{
 if (ローカル.datのラスト10が、今回取得したものの部分集合)
  ローカルのラスト10を、今回取得したものとさしかえ
 else
  あぼーんがあったとみなし、全部取得
}
if (取得した部分があったら)
{
 ローカル.datのmtimeを、リモートL-Mの時刻で変更
}

今、これでちょっとしたツールを動かしているのだけど、
Squidなどのキャッシュ串相手のときは、キャッシュをスルー
させるリクエストを入れないと、206を返してくれなくなる。

781 :デフォルトの名無しさん :02/12/13 14:41
うむ、proxy通す時はPragma:no-cacheは必要だな。
それと、今の2chのapacheは(互換板もだけど)416を返すから対処した方がいい。
もちろん404(302)の他、500等も対処してるよね?

あと、根本的に10レス前から取得する意味がわかんない。
1バイト前じゃだめなの?確かに確実ではないけど。

782 :デフォルトの名無しさん :02/12/14 15:59
>>780
ローカルのファイルシステムがFATだとmtimeを合わせられるとは限らない。

783 :デフォルトの名無しさん :02/12/15 13:47
いつの間にか「Set-Cookie: SPID=」が「Set-Cookie: PON=」に変わってるやんけ!
腹立つぞ。age

784 :780 :02/12/15 14:02
>>781
416は見落としてますた。当方で実験したときは、
206を返せないときは200だったので。

最新10レスを取得しに行くのは、一貫性チェックと
転送量抑制の落としどころを狙ったものです。
1レスだと、手が滑った連続投稿によるズレが識別
できないパターンが考えられて。
1バイトはさすがにどうかと思うんですが。

環境はPerl+LWP on Linuxどす。

>>782
ああそうだ、FATにはそんな仕様があったんだ…

鬱だ氏のう

785 :デフォルトの名無しさん :02/12/15 23:23
>784
既得DATの最後の1バイトは通常は改行文字。
DATは1レスにつき一行だから、改行文字はレスの最後にしか現れない。
だから、あぼーんがあった時に、
チェックした1バイトが改行文字になる確率はけっこう低いと思う。

226KB
新着レスの表示

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

0ch BBS 2004-10-30