「Monazilla/develop/access」の版間の差分
(ページの作成:「=サーバへのアクセス= サーバへのアクセス、ファイルの取得に関する説明。<br> HTTPに関する一般的な説明は省略します。 ==リ...」) |
細編集の要約なし |
||
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
=サーバへのアクセス= | [[Category:専用ブラウザ]] | ||
[[Category:ソフトウェア]] | |||
== 最新情報 == | |||
[[Monazilla/develop#最新情報]] | |||
をご覧ください。 | |||
==サーバへのアクセス== | |||
サーバへのアクセス、ファイルの取得に関する説明。<br> | サーバへのアクセス、ファイルの取得に関する説明。<br> | ||
HTTPに関する一般的な説明は省略します。 | HTTPに関する一般的な説明は省略します。 | ||
==リクエスト== | ===リクエスト=== | ||
===User-Agent=== | |||
====User-Agent==== | |||
''Monazilla/1.00 (ブラウザ名/バージョン)''<br> | ''Monazilla/1.00 (ブラウザ名/バージョン)''<br> | ||
という形式を強く推奨します。<br> | という形式を強く推奨します。<br> | ||
9行目: | 17行目: | ||
なお、2ちゃんねるビューア(●)の使用時には、これとは別に指定がありますので、それに従ってください。 | なお、2ちゃんねるビューア(●)の使用時には、これとは別に指定がありますので、それに従ってください。 | ||
===Accept-Encoding=== | |||
====Accept-Encoding==== | |||
gzipの対応を強く推奨します。<br> | gzipの対応を強く推奨します。<br> | ||
転送量が問題になった時から、2chブラウザはgzipで圧縮されたものを受け取れるようにするべきだ、という意見があります。<br> | 転送量が問題になった時から、2chブラウザはgzipで圧縮されたものを受け取れるようにするべきだ、という意見があります。<br> | ||
20行目: | 29行目: | ||
クライアント側は、どちらにも対応できるようにしておけば良いでしょう。 | クライアント側は、どちらにも対応できるようにしておけば良いでしょう。 | ||
===If-Modified-Since=== | ====If-Modified-Since==== | ||
前回のアクセス時のレスポンスにあった[[#Last-Modified]]の値を付けましょう。<br> | 前回のアクセス時のレスポンスにあった[[#Last-Modified]]の値を付けましょう。<br> | ||
更新が無い時に、無駄にデータ転送を行う事を防ぎます。 | 更新が無い時に、無駄にデータ転送を行う事を防ぎます。 | ||
27行目: | 36行目: | ||
詳細は[[#Range]]の項にて。 | 詳細は[[#Range]]の項にて。 | ||
===Range=== | ====Range==== | ||
差分取得を行う時に必要です。<br> | 差分取得を行う時に必要です。<br> | ||
既得サイズが1000バイトとするなら、<br> | 既得サイズが1000バイトとするなら、<br> | ||
44行目: | 53行目: | ||
ただ、更新時には通常より毎回1バイト多く転送が行われるので、通常の取得データからの検証が行える場合には、そちらの方法を選択した方が良いでしょう。 | ただ、更新時には通常より毎回1バイト多く転送が行われるので、通常の取得データからの検証が行える場合には、そちらの方法を選択した方が良いでしょう。 | ||
==レスポンス== | ===レスポンス=== | ||
===ステータスコード=== | |||
====ステータスコード==== | |||
2chでは、ファイルが無い時は大抵''302''になります。<br> | 2chでは、ファイルが無い時は大抵''302''になります。<br> | ||
ただし、''404''等になることが絶対にないわけではありません。 | ただし、''404''等になることが絶対にないわけではありません。 | ||
51行目: | 61行目: | ||
決め撃ちは避け、HTTP一般の仕様に沿うようにした方が良いでしょう。 | 決め撃ちは避け、HTTP一般の仕様に沿うようにした方が良いでしょう。 | ||
===Last-Modified=== | ====Last-Modified==== | ||
ファイルの更新日時です。<br> | ファイルの更新日時です。<br> | ||
[[#If-Modified-Since]]や[[#Range]]の項で説明しているように、できるだけ対応してください。 | [[#If-Modified-Since]]や[[#Range]]の項で説明しているように、できるだけ対応してください。 | ||
===Content-Encoding=== | ====Content-Encoding==== | ||
データがgzip圧縮されている時に''gzip''が付きます。<br> | データがgzip圧縮されている時に''gzip''が付きます。<br> | ||
[[#Accept-Encoding]]の項で説明しているように、できるだけ対応してください。 | [[#Accept-Encoding]]の項で説明しているように、できるだけ対応してください。 | ||
===Transfer-Encoding | ====Transfer-Encoding==== | ||
HTML化された過去ログでは''chunked''になることがあります。<br> | HTML化された過去ログでは''chunked''になることがあります。<br> | ||
対応しておきましょう。 | 対応しておきましょう。 | ||
2015年2月17日 (火) 04:34時点における最新版
最新情報
Monazilla/develop#最新情報 をご覧ください。
サーバへのアクセス
サーバへのアクセス、ファイルの取得に関する説明。
HTTPに関する一般的な説明は省略します。
リクエスト
User-Agent
Monazilla/1.00 (ブラウザ名/バージョン)
という形式を強く推奨します。
一時期においてMonazillaのUser-Agentのみがdat読みを許されるなど、User-Agentによって処理を変える事があり、未知のUser-Agentでは、2ch(その他掲示板サイト)による突然の仕様変更に対応できないことがあります。
なお、2ちゃんねるビューア(●)の使用時には、これとは別に指定がありますので、それに従ってください。
Accept-Encoding
gzipの対応を強く推奨します。
転送量が問題になった時から、2chブラウザはgzipで圧縮されたものを受け取れるようにするべきだ、という意見があります。
HTTPリクエストにAccept-Encoding: gzipを加えると、サーバが圧縮転送に対応していれば、圧縮されたデータが送られてきます。
解凍する手間はかかりますが、できるだけ対応させてください。
ただし、差分取得時には使えません。
転送量問題が一段落したあと、圧縮の際のサーバ負荷も考慮すべきだ、という意見も出ました。
しかしこれは、サーバ側で圧縮の可否を設定できますので、サイト管理人が優先順位を決めて対応すべき事です。
クライアント側は、どちらにも対応できるようにしておけば良いでしょう。
If-Modified-Since
前回のアクセス時のレスポンスにあった#Last-Modifiedの値を付けましょう。
更新が無い時に、無駄にデータ転送を行う事を防ぎます。
datの差分取得時には、ほぼ必須となります。
詳細は#Rangeの項にて。
Range
差分取得を行う時に必要です。
既得サイズが1000バイトとするなら、
bytes=1000-
とすることで、新たに追加された部分だけを取得できます。
この時、追加されたデータが無かった場合、部分取得失敗の#ステータスコード416が返ってきます。
この416は、レス削除等でdatファイルが既得分より小さくなっていた場合にも出るので、両者の区別が付きません。
そこで、#If-Modified-Sinceを使用すると、更新が無い時は304、更新があって小さくなっている時(レス削除等)は416、と区別できるようになります。
ただし、削除があっても、datサイズが既得分より小さくならない場合は、HTTPとしては部分取得成功の206となり、416にはならないので注意してください。
削除を検出する方法としては、(先の例で)bytes=999-として、前1バイトを余分に取る方法もあります。
datは1行1レスですので、既得分の最後の1バイトをもう一度取得し、それが改行コード以外なら、レス削除などでdatに変更が加えられたと判定するものです。
(サイズが変わった後も、偶然に改行コードになってしまう事があるのは諦めましょう。)
なお、この場合でも、#If-Modified-Sinceを用いていて更新が無い時は、1バイトのデータ転送もありません。
ただ、更新時には通常より毎回1バイト多く転送が行われるので、通常の取得データからの検証が行える場合には、そちらの方法を選択した方が良いでしょう。
レスポンス
ステータスコード
2chでは、ファイルが無い時は大抵302になります。
ただし、404等になることが絶対にないわけではありません。
また、他のサイトも含めれば一様ではないでしょう。
決め撃ちは避け、HTTP一般の仕様に沿うようにした方が良いでしょう。
Last-Modified
ファイルの更新日時です。
#If-Modified-Sinceや#Rangeの項で説明しているように、できるだけ対応してください。
Content-Encoding
データがgzip圧縮されている時にgzipが付きます。
#Accept-Encodingの項で説明しているように、できるだけ対応してください。
Transfer-Encoding
HTML化された過去ログではchunkedになることがあります。
対応しておきましょう。