2016-03-21 2 views
4

私はhttp2のApacheを持っています。私はブラウザのキャッシュに保存したいファイルをサーバーにプッシュしましたが、それはなぜか分かりません。サーバープッシュでファイルをプッシュした後、ブラウザのキャッシュにファイルを保存するにはどうすればよいですか?

私は、次のものをPHPファイルでプッシュしました。

header('Link: <'https://www.myweb.com/mypath'>;rel="preload";as="video"', FALSE); 

私の視点から、私はaccess_logの中で、サーバーへのリクエストを見ることができるので、サーバープッシュが、働いているが、私はファイルがブラウザのキャッシュに保存されるべきであると思うが、それはdoesntの。

ファイルのサーバープッシュを試行した後、このファイルをリクエストしてキャッシュから取得します(Chromeの「ネットワークコンソール」の「キャッシュから」を参照)。

おかげ

+0

プッシュされたコンテンツの 'Cache-Control'ヘッダーを検証しましたか?それはどれですか? 'public、max-age = somevalue'、' expires'、 'etag'、 'last-modified'を設定できます。反対側の "private"、 "no-store"または "no-cache"が設定されている場合、サーバープッシュはあなたを助けません。サーバープッシュは、Webブラウザーのローカルキャッシュにデータを配置するだけです。 'Cache-Control'ヘッダーは、キャッシュからのデータが使用されるかどうか、およびそれがどれくらい長く使われるかを指定します。 – Oleg

+0

私はそれについて考えましたが、私はこのパラメータをどこに設定するのか分かりません。 私が押しているファイルのURLを置くと、あなたが言ったパラメータがあるので、ファイルはダウンロードされてキャッシュに保存されます。しかし、私がプッシュをすると、パラメータがないようです。プッシュの行にいくつかのパラメータを設定する必要があるかどうかは分かりません(ヘッダー...)。 – Elo

+1

IMOでは、HTTP/1.1 Webサイトであっても正しくキャッシュを設定することは、年中いつでも困難です。それをHTTP2と組み合わせることはまだ難しいです。 [ここに記事があります](https://www.shimmercat.com/en/info/articles/caching/)に、クエリパラメータを組み合わせる方法、プッシュする方法などの詳細が記載されています。完全な開示で、私たちはこの権利を得るためにサーバーの多くを作りました。そして、私たちはまだ途中です。 – dsign

答えて

0

あなたは本当だった、と私は私のコードでそれを持っていたが、トラブルが節約Google Chromeのキャッシュを理解した上で言ったすべてのこと。

サーバープッシュを使用してHTTP2接続でファイルを送信すると、サーバープッシュで要求されたファイルがクライアントに送信されますが、ブラウザによってファイルが要求されるまでGoogle Chromeキャッシュに保存されません。

例:サーバーは、stylesheet.css(サーバープッシュで送信されたもの)を使用してindex.htmlの応答を送信します。スタイルシートは、Google ChromeがStylesheet.cssを要求したときにのみGoogle Chromeキャッシュに保存されます(クライアントはインデックスhtmlを要求し、スタイルシートをプッシュします)。 Google Chromeが要求していない場合、要求されていないプッシュとなり、キャッシュには保存されません。

成功したら、ページをリロードすると、Google Chromeの「キャッシュから」が表示されます。

お時間をいただきありがとうございます。

関連する問題