私はhttp2のApacheを持っています。私はブラウザのキャッシュに保存したいファイルをサーバーにプッシュしましたが、それはなぜか分かりません。サーバープッシュでファイルをプッシュした後、ブラウザのキャッシュにファイルを保存するにはどうすればよいですか?
私は、次のものをPHPファイルでプッシュしました。
header('Link: <'https://www.myweb.com/mypath'>;rel="preload";as="video"', FALSE);
私の視点から、私はaccess_logの中で、サーバーへのリクエストを見ることができるので、サーバープッシュが、働いているが、私はファイルがブラウザのキャッシュに保存されるべきであると思うが、それはdoesntの。
ファイルのサーバープッシュを試行した後、このファイルをリクエストしてキャッシュから取得します(Chromeの「ネットワークコンソール」の「キャッシュから」を参照)。
おかげ
プッシュされたコンテンツの 'Cache-Control'ヘッダーを検証しましたか?それはどれですか? 'public、max-age = somevalue'、' expires'、 'etag'、 'last-modified'を設定できます。反対側の "private"、 "no-store"または "no-cache"が設定されている場合、サーバープッシュはあなたを助けません。サーバープッシュは、Webブラウザーのローカルキャッシュにデータを配置するだけです。 'Cache-Control'ヘッダーは、キャッシュからのデータが使用されるかどうか、およびそれがどれくらい長く使われるかを指定します。 – Oleg
私はそれについて考えましたが、私はこのパラメータをどこに設定するのか分かりません。 私が押しているファイルのURLを置くと、あなたが言ったパラメータがあるので、ファイルはダウンロードされてキャッシュに保存されます。しかし、私がプッシュをすると、パラメータがないようです。プッシュの行にいくつかのパラメータを設定する必要があるかどうかは分かりません(ヘッダー...)。 – Elo
IMOでは、HTTP/1.1 Webサイトであっても正しくキャッシュを設定することは、年中いつでも困難です。それをHTTP2と組み合わせることはまだ難しいです。 [ここに記事があります](https://www.shimmercat.com/en/info/articles/caching/)に、クエリパラメータを組み合わせる方法、プッシュする方法などの詳細が記載されています。完全な開示で、私たちはこの権利を得るためにサーバーの多くを作りました。そして、私たちはまだ途中です。 – dsign