Bulknews の RSS のアクセスが尋常でない感じに増えてきていて、そろそろなんらか対策をしないと、という感じになってきたので、とりいそぎ以下の設定を行いました。
- HTTP レスポンスヘッダに Cache-Control: public, max-age=3600 の追加
- If-Modified-Since をつけず、大量にアクセスしてくる User-Agent に対し、暫定的に 0 bytes のフィードを返す
Bulknews では企業のゲートウェイ経由でのアクセスが相当数ある(全体の10%程度?)ため、プロキシサーバでのキャッシュがきいてくれればということで、前者を設定してみました。様子を見ていますが、アクセス上位のゲートウェイサーバのいくつかではかなりキャッシュが有効になっていて、アクセス数が1/10 程度に減少しているようです。
後者は暫定的な帯域消費への対策で、そのようなリーダーの作者さんなどとコンタクトをとりながら、解決に向かえればと思ってます。
これでも問題があれば CDN や BitTorrent のお世話になる感じですかね。。
> If-Modified-Since をつけず、大量にアクセスしてくる User-Agent に対し、暫定的に 0 bytes のフィードを返す
このときのステータスコードは何を返しているのでしょうか?
bulknews に大量にリクエストを投げるのは避けたいので確認してませんが、もし 0 バイトのフィードを 200 OK で返しているなら、単純に 503 Service Unavailable を返すというやり方の方が良いのでは?
Posted by: 斎藤宏明 on March 23, 2005 08:29 AMステータスコードは200です。
403や503などのコードを返すと、クライアント側でエラーとなりさらにアクセスする頻度が増えるため逆効果となります。
ちなみにこの処理は自動化しているわけではなく、目視で特定のソフトウェアのUser-Agentを調べてやっています。最新版ではIf-Modified-Sinceに対応しているため、アップグレードを促すフィードアイテムを表示することも検討しています。
Posted by: miyagawa on March 23, 2005 01:18 PMあ、確かに。エラーだったらリトライするという実装のクライアントだと、何回もアクセスしに来ることになりますね。なるほど。
Posted by: 斎藤宏明 on March 23, 2005 09:08 PM