Superfeedrを作成したので、コメントに塩を入れてください。とにかく客観的になるように努めます。
スケールアップしたい場合や、データセットを時間の経過とともに拡大し続けたい場合は、(ご想像のとおり)ポーリングが非常に困難になる可能性があります。おそらく、HTTP の問題と XML 解析の問題の処理に多くの時間を費やすことになるでしょう。Superfeedr では、すでに何百万ものフィードを取得して解析しており、新しい「種」のエラーに遭遇しない週はありません。アマゾンの熱帯雨林の最初の入植者のように感じることがあります。
HTTP の問題の中には、リクエストがあまりにも積極的であることが判明したため、いくつかのサービスがあなたをブロックしていることは明らかですが、これらのサービスのいくつかでダウンタイムに対処する必要があり、システム全体の速度が低下する可能性があります. もちろん、HTTP ヘッダーを処理する際のあいまいさについて話しているわけではありません ( と を区別するサーバーEtag
やetag
、引用符付きの etag のみを受け入れるサーバーもあれば、拒否するサーバーもあることがわかっています)。
XML 側では、さらに悪いことです。まず、おそらく世界に食べさせられるほど多くのスープを解析できる必要があります (しゃれが意図されています!)。XML は、多くの Web 開発者にとって非常に複雑な科学であるように思われます。これらの開発者は、エスケープが必要であること、名前空間にプレフィックスがあること、さらにはmost <open> tag must eventually be </closed>
. ここで、RSS、ATOM、または RDF のフレーバーにも対処する必要があり、それらすべてに対処する必要があります。
適切な形式を特定したら、データの意味も理解する必要があります。人々はタイムスタンプをめちゃくちゃにする傾向があるので、私は常にフィードのタイムスタンプを引用しています。私たちが見つけたいくつかのフィードでは、日付として「昨日<published>
」さえ表示されています。それはどのようにかわいいですか?現在、機械可読のタイムスタンプを作成している場合は、数値だけのものもあれば、2012 年 6 月 3 日のものもあります。適切な形式を使用していても (RSS 仕様で指定されていません!)、タイムゾーンの仕組み (将来公開されるものは大丈夫!) や夏時間さえ理解できない人も珍しくありません。最後に、それは実際には正当なポイントです。一部のフィードはグレゴリオ暦を使用していませんが、たとえばアラビア暦を使用しています。
差分 (新しいものと古いものを識別すること) も信じられないほど困難です。タイムスタンプがめちゃくちゃになっているからです。また、たとえば RSS 1.0 には<id>
. 多くの人が追跡コード (変更中!) をリンクやエントリの本文に入れるため、1 つを作成するのは困難です :(
一言で言えば、ポーリングは混乱しており、大規模に処理するのは非常に困難です。このパスをたどる場合は、 PubSubHubbubオープン プロトコルを使用してください。これはあなたにとっては小さな一歩ですが、Webmanity にとっては大きな一歩です。なぜなら、それは採用を拡大し、すべてがうまくいけば、最終的には投票を終えるかもしれないからです。良いニュースは、多くのプラットフォームがそれを採用していることです。これにより、ポーリングの必要性が大幅に減少するはずです.
あなたが構築しようとしているものは私には明らかではありませんが、Superfeedrのようなソリューションを使用することは良いアプローチだと思います. すべての HTTP の問題に対処し、XML を可能な限り正規化して、より簡単に使用できるようにします (JSON に変換することもできます)。はい、私たちはサービスに料金を請求しますが、多くの時間を節約できるので、あなたのサービス/データストアが他の誰とも違うものになっていることに集中することができます.