A common question about Server Push is “what if the client already has a copy in cache?” Because Push is inherently speculative, there’s always the chance that you’re sending something that the browser doesn’t need.
HTTP/2 allows the client to cancel the push in this situation, with a
RESET_STREAM. However, even then, there’s roughly a round trip’s worth of wasted data in flight that could have been used for better things. Remember, the ideal is to send only the data that the client needs to show the page.
A proposed solution for this is for the client to use a compact Cache Digest to tell the server what it already has in cache, so that the server knows what’s needed.
Bon article de Mark Nottingham sur HTTP 2, qui dépasse les notions de base qu’on voit partout. On y parle même un peu des évolutions de TCP.