Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Server HTTP/2服务器推送和浏览器缓存_Server_Push_Browser Cache_Http2 - Fatal编程技术网

Server HTTP/2服务器推送和浏览器缓存

Server HTTP/2服务器推送和浏览器缓存,server,push,browser-cache,http2,Server,Push,Browser Cache,Http2,我读了一些关于HTTP/2服务器推送的文档 一位博客所有者说: 然而,在服务器推送中有一个非常令人头痛的问题。如果浏览器已经缓存了要推送的资源文件,那么推送只会浪费带宽 另一个说: 由于服务器推送将资产作为不同的HTTP对象(每个对象都有自己的缓存控制头)发送到客户端,因此浏览器可以像缓存其他对象一样缓存这些资产 我的问题是、HTTP/2推送和浏览器缓存都运行良好?或者,如果我为某些资源激活了HTTP/2推送功能,浏览器缓存对这些资源将不起作用?如果推送资源并且页面需要使用它,它将保存到浏览器缓

我读了一些关于HTTP/2服务器推送的文档

一位博客所有者说:

然而,在服务器推送中有一个非常令人头痛的问题。如果浏览器已经缓存了要推送的资源文件,那么推送只会浪费带宽

另一个说:

由于服务器推送将资产作为不同的HTTP对象(每个对象都有自己的缓存控制头)发送到客户端,因此浏览器可以像缓存其他对象一样缓存这些资产


我的问题是、HTTP/2推送和浏览器缓存都运行良好?或者,如果我为某些资源激活了HTTP/2推送功能,浏览器缓存对这些资源将不起作用?

如果推送资源并且页面需要使用它,它将保存到浏览器缓存中,以备下次使用

问题在于,如果您更改了资源,并再次推送它,但旧版本已在浏览器缓存中,并且缓存控制头显示它仍然有效,那么浏览器将使用旧的缓存版本,尽管您推送了新版本。所以这是徒劳的一推


很好的博客文章也将很快发布。谢谢@Barry Pollard,我将只在html中发布组合css。因此,我将通过Cloudflare Rocket Loader延迟其他资产,如js、woff2和图像。如果我这样做,我的网页将在350毫秒内加载。如果我不这么做,页面的加载速度在300-600毫秒之间。我真的很感激!再次感谢你!好的,但是如果你再次访问页面,那么你真的应该避免再次推。您可以使用基于cookie的方法来执行此操作:。哦,我使用的是Cloudflare“缓存所有内容”规则。所以cookies将被CF.@BarryPollard覆盖,所以我不能使用这个推送功能,我猜…什么是“浪费的推送”?除了几十个字节的头,没有浪费。如果你推,你就推头和正文。理论上,在获得PUSH_PROMISE框架后,浏览器可以取消该框架并说“不,谢谢-已经收到了该框架”,但在实践中,资源将已经发送,并且将在途中,因此客户端将获得水推的全部成本。