ネットサービスとかGoogleとか豆知識とか。

Index > RSS > SUP(Simple Update Protocol) - 効率的なフィードのクロールを実現するためのプロトコル
RSS
2008年08月29日 20:26

SUP(Simple Update Protocol) - 効率的なフィードのクロールを実現するためのプロトコル

  • このエントリーをはてなブックマークに追加
  • ... PV
スポンサード リンク

更新されたフィードを効率的にクロールするための Simple Update Protocol (SUP) というプロトコルが FriendFeed の開発者によって提案されているそうです。

フィードがブログやサイトの更新情報を伝えるものなら、SUPはフィードそのものの更新情報を伝えるためのプロトコルだと理解することができます。

以下は関連記事を読んで私なりに解釈したSUPの説明です。

通常、あるフィードが更新されているかどうかはそのURLをリクエストしてみなければ分かりません。

たとえばクローラーが FriendFeed の全ユーザのフィードを定期的にチェックしていたとすると、クローラーはある順番にしたがって定期的に全フィードのURLをリクエストするでしょう。これでは更新の取得に遅延が発生してしまいます。

しかし、SUPを利用すればどのフィードが更新されているかをあらかじめ知ることができます。

たとえばクライアントは、FriendFeedのサーバに対して「ある期間内に更新されたフィードはどれですか?」と聞くことができます。サーバは更新されたフィードのSUP-IDをリストにして返します。それによってクローラーは確実に更新されているフィードを知ることができ、効率的にフィードをクロールすることができます。

要するに、はてなブックマークやTwitterやdel.icio.usやFeedBurnerといった、多数のフィードを配信しているサービスがSUPを実装していると、かなり有用なわけです。

すでに FriendFeed では http://friendfeed.com/api/sup.json からSUPフィードを取得することができます。

SUPを利用した場合の処理の流れは次のようになるでしょう。

  1. フィードを配信するサーバは、RSSやAtomに特別なlinkタグをつけます。そのlinkタグにSUP-IDが含まれていて、クライアントはそのSUP-IDとフィードのURLをデータベースに格納しておきます。
  2. クライアントはSUPフィードをリクエストします。
  3. リクエストを受けたサーバは、(指定された)期間内に更新されたフィードを確認し、それらのSUP-IDをリスト化し、SUPのフォーマットにしてレスポンスを返します。
  4. クライアントはSUPフィードを解析し、含まれるSUP-IDをデータベースと照合してURLを取得し、そのURLをクロールします。

これによりクライアント側は更新されたフィードを素早く知ることができ、サーバ側はリクエストの負荷を下げることができます。また、SUP-IDは完全にランダムな文字列なので、SUPによってプライベートなフィードのURLが外部に漏れるもこともありません。

SUP はオープンソースで、来月にリリースが予定されているそうです。

【関連記事】
» フィード更新速度を加速する新プロトコルsup - huixingの日記
» Speed Up RSS? FriendFeed's Going to Try - ReadWriteWeb
» FriendFeed Blog: Simple Update Protocol: Fetch updates from feeds faster
» simpleupdateprotocol - Google Code