Re: HTTP2 Expression of Interest : Squid

In message <>, Willy Tarreau writes:
>On Tue, Jul 17, 2012 at 06:24:10AM +0000, Poul-Henning Kamp wrote:

>> Uhm, doesn't this lead to incredible cache-bloat ?
>> 	index.html + {style.css, logo.png...}
>> 	article.html?art=1 + {style.css, logo.png...}
>You're right, [...]

That's quite a bummer.

In the scenario where the user-agent has accessed this particular
website previously, there is a very good chance that it has already
cached the extra resources, whereas the first time it accesses
a website, it knows for sure that it hasn't.

That indicates to me that we should put the client in charge.

So why don't we simply give HTTP/2.0 a new primitive, which we
for historical continuity can call "MGET" meaning "send me all
you think I'll need", vs. "GET" meaning "give me just this one" ?

The response to MGET would be perfectly normal objects in all
other respects (but we need to stick their URI in the reponse
somehow.) so caching and all that works normally.

That puts the client squarely in charge of enabling server-push,
makes it trivially easy to avoid it (bots, scripts etc) and
will give the user-agent writers a chance to compete on the
best logic for chosing MGET vs. GET ?

Heck, you could even do that in HTTP/1.1:

	MGET /index.html HTTP/1.1

	1xx Multiple objects coming your way
	Mget-Object: uri=/style.css, size=23132
	Mget-Object: uri=/index.html size=213123
	Mget-Object: uri=/logo.png size=2394

	200 OK
	[style.css reply]

	200 OK
	[index.html reply]

	200 OK
	[logo.png reply]

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

Received on Tuesday, 17 July 2012 10:05:15 UTC