jsr340-experts@servlet-spec.java.net

[jsr340-experts] [servlet-spec users] Re: HTTP/2 Push Was: Server-Sent Events in Java EE 8

From: Edward Burns <edward.burns_at_oracle.com>
Date: Mon, 11 Aug 2014 08:53:25 -0700

>>>>> On Thu, 7 Aug 2014 16:26:18 +1000, Greg Wilkins <gregw_at_intalio.com> said:

GW> Clients receiving a push promise can decide that they already have the
GW> resource (or don't need it) and reset the new stream, or they can accept
GW> the new streams data and typically use it to populate their cache. So
GW> essentially http2 push is a way for a server to preload a clients
GW> cache.

This is a great summary of the intent of the feature from the http2
perspective. This blog entry from http2 google developer advocate Igor
Griorik shows this intent in action:

https://www.igvita.com/2013/06/12/innovating-with-http-2.0-server-push/

I think we have an opportunity here for Servlet to support framework
authors who want to intelligently use this feature. In my role as
steward of the JSF spec I can see server push being used very
effectively. Frameworks that build on Servlets (such as JSF) are in a
great position to take advantage of this because they have a priori
knowledge of the resources that go along with a page before the browser
knows to fetch them.

But I have a fundamental question about this that I'm confident Greg can
answer. If the server is going to pre-push resources that go along with
a page, how can the server know if the user-agent already has an
up-to-date copy of the resource in its cache? In the case where the
user-agent already has the resource, pre-pushing it would be a waste of
bandwidth. How does http2 deal with this very fundamental problem?

Thanks,

Ed
-- 
| edward.burns_at_oracle.com | office: +1 407 458 0017
| 29 work days til JavaOne 2014