ブログが人気の今日、一部の Web アプリケーションでは大量の RSS フィードを解析する必要があります。効率を向上させる方法は非常に重要な問題です。これは、MagpieRSS の機能にリストされています: HTTP 条件付き GET Last-Modified と ETag を賢く使用して、帯域幅を節約し、ダウンロード時間を高速化します。注意。
Etag とは何ですか?
RFC 2616 を読んで、Etag について少し印象を持ちました:
ETag 応答ヘッダー フィールドは、要求されたバリアントのエンティティ タグの現在の値を提供します。エンティティ タグは通常「強力なバリデータ」ですが、プロトコルはエンティティ タグを「弱いバリデータ」としてタグ付けするメカニズムを提供します。強力なバリデーターは、エンティティのビットが変更されるたびに変更されるものと考えることができますが、弱い値は、エンティティの意味が変更されるたびに変更されます。あるいは、強力なバリデーターを、エンティティの識別子の一部と考えることもできます。一方、弱いバリデータは、意味的に同等のエンティティのセットの識別子の一部です。上記のことから、エンティティ タグは本質的に「強力なバリデータ」であることが大まかにわかりますが、HTTP
プロトコルはエンティティ タグにタグを付けることで「弱い」メカニズムを提供します ( コンテンツの検証コードと同様です)。この一節は後で 2 つの方法で説明されますが、まだ少しわかりにくいです。この文章を読んだ後、私は Etag の "E" が "Entity" を表していると結論付けました。 Magpie のホームページには、
RSS ハッカーのための HTTP Conditional Getという記事があります。それを読むと、より明確になります。まず HTTP 条件付き GET の基本原理について説明します。これは非常に簡単です。つまり、Web サーバーからデータを取得するときに、ファイルが変更されていなければ、新しいファイルを提供します。ファイルを戻さずに、変更がないことをクライアントに伝えるだけです。これにより、ネットワーク帯域幅とリソースを大幅に節約できます。 Etag と Last-Modified は、HTTP
1.0 から HTTP1.1 まででのみ使用できる概念です。 Web サーバーからファイルを取得するときは、HTTP 応答ヘッダーの Etag フィールドと Last-Modified フィールドを読み取るだけで済みます。これら 2 つのフィールドの具体的な内容は無視できます (奇妙かもしれません、RFC 2616 Etag には特定の値の定義がありません)、これら 2 つの値をローカルにキャッシュし、次回ファイルが更新されたかどうかを確認するときに 2 つの値を比較します。変化がない場合、サーバーの応答コードは HTTP 200 (OK) ではなく、304 になります。
上の写真のように。現在、Gregarius (Lilina も ETag を適用しました) を使用する過程で、FeedBurnrer によって書き込まれたフィードのほぼすべてが Etag を使用していることがわかりました (それ以外の場合は、サーバーが麻痺するでしょう、ほほ) HTTP ヘッダーの応答をテストしてみましょう: この期間中、私のブログは更新されていません。このようにして、Last-Modified と ETag は同じ値を返します。Gregarius は再解析する必要がなく、
HTTP$ curl -I http://feeds.feedburner.com/dbanotes HTTP/1.1 200 OK Date: Tue, 25 Oct 2005 11:34:15 GMT Server: Apache <b>Last-Modified: Tue, 25 Oct 2005 04:30:12 GMT</b> <b>ETag: U4q478bDKLqZ8UMMC8A5afZuHug</b> Content-Type: text/xml;charset=utf-8 $ curl -I http://feeds.feedburner.com/dbanotes HTTP/1.1 200 OK Date: Tue, 25 Oct 2005 11:34:21 GMT Server: Apache <b>Last-Modified: Tue, 25 Oct 2005 04:30:12 GMT </b> <b>ETag: U4q478bDKLqZ8UMMC8A5afZuHug</b> Content-Type: text/xml;charset=utf-8条件付き GET
をサポートしています。はい、gzip/deflate エンコード もサポートしています。別の RSS 読み取りツール POPU (Zhou Botong) については知りません。 上記は私のメモです。誤解がある場合は修正してください。