 Oh, Jesus, man! How's your fancy a game of football? Well, as long as it's not you playing, mate, because that was ridiculous. What time does the game start? Tuesday. How's the wasted journey then? We've got nice ponchos out of it though. Work fine for England. It's going to be tough, isn't it? Why? HTTP2. Why? Well, we have to turn around and say... Lol, no! Sorry, guys. It's all broken in it. You know that stuff we said? We were lying! We've got to change everything that you do. With HTTP2, the rules all change. Yes, because, well, I think there's three, right? Because the requests are... They're not as expensive anymore. Are they? Because you've got, like, was it one TCP stream or whatever? Yeah, yeah, with HTTP2 you've got one stream, one connection even. So, requesting new files, it doesn't have to open up a new connection. It's just all part of the multiplex stream. So now you can what? You can send down all your separate files. So, spriting goes away, concatenation goes away. Are you still in line? No, you probably wouldn't, would you? Probably not, no. I think because it's not... I mean, you're still going to have the request and response, but all those headers are compressed. Oh, yeah. Because they're a big deal. Like, it needs to be one. You've got, like, a K and a half of headers sometimes with cookies and that. If you multiply that by, like, 80 requests in a page, that really stacks up. Yeah, yeah, yeah. That compression just takes care of that. Because you don't have the slow start for most of it as well, because you're on that single TCP connection. Yeah, it's... So, I guess you're probably the same as me. When you write CSS, do you have, like, a CSS file per component? Yeah, pretty much, that's what I tell them. I think we can get to a point where we just serve all of those files separately. That sounds really, really nice, actually, because it reduces that build step quite a bit, really. You know, you just sort of... Here's the thing I made. Push it up live. That's good. Actually, talking pushing, that's another thing about HTTP too as well, isn't it? You know, you can request one file and get all those... Yeah, you can say, you know, oh, you want the page? Well, I'm going to give you the page. But, special bonus prize. Here's some CSS, here's some JavaScript that I know you're going to need. And it will say, like, here's what your request would look like. And here comes the response. Just going to throw it at you. Downer, what if you've already got it? So, yeah, I was looking at this. The client actually can send an RST-understore stream. Oh, wow, that's catchy. Pack it, yeah. And that's going to tell it to, you know, identify a particular stream and say, could you not, mate? He's just back off. Could you stop that? I've already got it, yeah. And there is a... You can end up with a situation where, you know, by the time you, you know, send that to the other side, it's already sent you an entire file anyway. So there's going to be some wasted bytes. That's too bad though, right? We don't think it's too bad. Yeah. It's probably better that way round than having to kind of request everything over and over and over again. So, OK, you decide you're going to ignore Paul and Jake's advice wisely, because HTTP2 is kicking off. But there's not every client's going to be HTTP2 aware, right? You still got HTTP1 clients. So how is the developer going to kind of handle both? Well, I mean, the servers are going to take care of that automatically, but I take your question. I take your point. We've got this issue of do you, as a developer, play to HTTP2 strengths, or do you kind of fudge it for HTTP1? I reckon. I reckon if you built something that only works in other green browsers, you're probably safe to be like, I'm just going to do HTTP2, right? Yeah, so multiple CSS files, multiple JS files, everything sweet. I reckon. Oh, the HTTP2, it sends an upgrade header, doesn't it? Yes, it does. So you could differentiate on that. You could be like, if I get that upgrade header, I'm going to send you the HTTP2 version. Oh, I see what you're talking about. And so then you might build two versions in your build script to concatenate in one, not concatenate in the other, and then basically differentiate based on that header, which one you're going to serve. So you cater for both? Ha-ha, winner-winner chicken dinner. That's a good idea. I like it. One of the things I'm really hoping for is the sort of edge caching services like Cloudflare, Akamai, the CDNs. I mean, they're already supporting things like speedy, I think Akamai supports HTTP2 already. What I really want to see from those guys is for them to understand particular headers that our servers would send. So even if you're running HTTP1.1, you could send along like a link prefetch header, and it would interpret that as a HTTP2 push. So that's kind of like a halfway house. It's like my server's not ready to go HTTP2 entirely, but if I give you these additional bits of a nudge, then the people who do understand that you're just giving them just that little bit of an edge of what you're doing. Yeah. So you even send like an ex-header to say, oh, you know, ex-priority or something. That would be the signal to the HTTP2 part at the end that can sort of do the right thing with that stuff, send the right frames in the data stream. In any case, I'm sold. I think it's going to be great. I suspect we probably just need to issue an apology to pretty much every developer that we've misadvised over the last few years. Any performance talk before this time is null and void. That's going to make us look pretty silly, isn't it? That's going to be awkward.