4

http2 の Apache があり、ブラウザのキャッシュに保存したいファイルのサーバー プッシュを作成しましたが、そうではなく、その理由もわかりません。

次のphpファイルでプッシュを行いました。

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

私の観点からは、access_log でサーバーへの要求を確認できるため、サーバー プッシュは機能していますが、ファイルはブラウザーのキャッシュに保存する必要があると思いますが、そうではありません。

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

ありがとう

4

1 に答える 1

0

あなたが言ったことはすべて真実で、私のコードにもありましたが、問題は Google Chrome キャッシュの保存の理解にありました。

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

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

プッシュが成功してページをリロードすると、Google Chrome に「from cache」と表示されます。

御時間ありがとうございます。

于 2016-04-06T11:33:55.040 に答える