web-dev-qa-db-ja.com

SPDY Pushを使用して、遠い将来の期限切れヘッダーにポイントはありますか?

私が理解しているように、SPDY Pushでは、サーバーはHTMLドキュメントを提供し、送信する前にそれを調べて、画像/ cssリソースXYおよびZが必要であると判断し、それらも送信します。

それらが私のブラウザによってすでにキャッシュされている場合、どうやって気にしないことを知るのですか?または、クライアントがspdy/3ブラウザーを使用している場合、静的リソースをキャッシュしようとしても基本的に意味がありませんか?

(明らかに、すべてのクライアントがそうなるわけではありませんが、私はこのケースに興味があります)

2
Codemonkey

Chromium開発者のWebサイトのリソースによると、これは欠点の1つです。クライアントがすでにリソースを持っているかどうかをサーバーが知ることはできないため、無駄な転送になる可能性があります。

出典: http://www.chromium.org/spdy/link-headers-and-server-hint

3

最初のページの読み込み時間を本当に最適化する必要がある場合:

  • 最初のページの読み込み中に必要なすべてのbootstrap静的ファイルの署名(md5/shaハッシュのサブストリング)を生成します。これは通常、基本的なcss + jsからブートストラップまでです。それ以降、通常はjsものをロードしています(特にクライアントが豊富なアプリケーションの場合、サーバープッシュは必要なく、クライアントはキャッシュを適切に再利用します)
  • 長期的なCookie「bootstrap-version」をbootstrapバージョン署名に設定します。
  • クライアントがページを要求したとき:

    • ブートストラップバージョンのCookieが最新でないか、存在しない場合は、bootstrapファイルのサーバープッシュを開始します。
    • それ以外の場合は、クライアントがそれらをキャッシュしていると想定します(そうでない場合があり、小さなリグレッションが発生しますが、99%の場合はキャッシュされます)

そうすることで、非常に高い効率を達成し、最初のページの読み込みは、サーバープッシュによるキャッシュを使用した繰り返しの訪問のように効果的に見えます。

Goおよびnodespdyの実装により、サーバープッシュで遊ぶことができます。 AFAIK nginx/Apacheモジュールにはまだこの機能がありません。アプリケーションが提供するヘッダーなどに基づいて、すぐに追加されることを願っています。

4