I apologize if someone already mentioned this, but there&#x27;s a way to eliminate the penalty to the user without changing HTTP at all. Browsers can simply check all the non-expired resources <i>after</i> all the rest. Now the latency is the same, but we still do the checks, just after everything else and we&#x27;re already rendering the page. Only if one of those resources did actually change then we re-render the page.<p>The immutable solution is cleaner, and doesn&#x27;t load the server as much, but it&#x27;s not backward compatible and requires the people who run the server to know what they&#x27;re doing. Maybe the two solutions could be combined?<p>The biggest potential drawback I see is that maybe most resources, including the html don&#x27;t expire, so every page will be rendered and re-rendered. Giving little benefit and making the rendering choppier. Some of that maybe could be mitigated by starting the rendering in the background and not displaying it until a certain percentage of requests return, or special casing the &quot;page&quot; itself as opposed to page resources.