ホームページ  >  記事  >  php教程  >  Http 1.1 Etag と Last-Modified により PHP の効率が向上

Http 1.1 Etag と Last-Modified により PHP の効率が向上

WBOY
WBOYオリジナル
2016-06-13 12:30:54927ブラウズ

ブログが人気の今日、一部の 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 から HTTP

1.1 まででのみ使用できる概念です。 Web サーバーからファイルを取得するときは、HTTP 応答ヘッダーの Etag フィールドと Last-Modified フィールドを読み取るだけで済みます。これら 2 つのフィールドの具体的な内容は無視できます (奇妙かもしれません、RFC 2616 Etag には特定の値の定義がありません)、これら 2 つの値をローカルにキャッシュし、次回ファイルが更新されたかどうかを確認するときに 2 つの値を比較します。変化がない場合、サーバーの応答コードは HTTP 200 (OK) ではなく、304 になります。

上の写真のように。現在、
OpenRSS
は 40 以上のフィードを購読していますが、応答速度は非常に良好です。

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) については知りません。 上記は私のメモです。誤解がある場合は修正してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。