monazilla Part 3

このエントリーをはてなブックマークに追加
スレの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を返してくれなくなる。
うむ、proxy通す時はPragma:no-cacheは必要だな。
それと、今の2chのapacheは(互換板もだけど)416を返すから対処した方がいい。
もちろん404(302)の他、500等も対処してるよね?

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