使用服务器推送推送文件后,如何将文件保存在浏览器缓存中?

How could I save files on browser cache after pushing it with a Server push?

我有一个带有 http2 的 Apache,我已经将文件推送到服务器,我想保存在浏览器缓存中,但它没有,我也不知道为什么。

我已经用 php 文件推送了,下一个。

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

从我的角度来看,服务器推送工作正常,因为我可以在 access_log 中看到对服务器的请求,但我认为文件应该保存在浏览器缓存中,但是它没有。

我尝试向服务器推送一个文件,然后请求该文件并从缓存中获取它(参见 Chrome "from cache" 的网络控制台)。

谢谢

你说的都是真的,我的代码中也有,但问题在于对 Google Chrome 缓存节省的理解。

当您在 HTTP2 连接上使用服务器推送发送一些文件时,通过服务器推送请求的文件作为响应发送给客户端,但 Google Chrome 不会将其保存到 Google Chrome 缓存直到浏览器请求文件。

例如:服务器发送 index.html 的响应及其 stylesheet.css(此响应随服务器推送一起发送)。只有在 Google Chrome 请求 Stylesheet.css 时,样式表才会保存到 Google Chrome 缓存中(客户端只请求了索引 html 并且推动样式表)。如果Google Chrome 没有请求它,它将是一个无人认领的推送,它不会被保存到缓存中。

如果您推送成功并重新加载页面,您将在 Google Chrome 上看到 "from cache"。

感谢您的宝贵时间。