
HTTP/2 Server Push on Netlify - calavera
https://www.netlify.com/blog/2017/07/18/http/2-server-push-on-netlify/
======
jitl
> _It’s important to understand that HTTP /2 requires secure connectivity.
> Only websites with HTTPS enabled can take advantage of HTTP/2 and its
> performance optimizations, like server push and header compression._

Pedantically, this is not correct. HTTP/2 does not mandate any encryption.
But, all the browser vendors only support HTTP/2 with TLS.
[https://http2.github.io/faq/#does-http2-require-
encryption](https://http2.github.io/faq/#does-http2-require-encryption)

~~~
richardwhiuk
If you assume the second sentence explains the first, then this is correct -
only websites (i.e something designed to be consumed by browsers) with HTTPS
can take advantage of HTTP/2.

~~~
fredliu
This is true, but no mandate on encryption in the HTTP/2 standard was an
deliberate decision, one of the very few differences between HTTP/2 and SPDY.
But yes, practically, you can't use HTTP/2 without encryption nowadays.

------
thearrow
How do people go about sending Link headers / configuring server push for
resources with a changing hash in their filenames?

For example if you have your app.ab9a9a09fe9.js file, but then the next deploy
you have your app.ba293dcde.js file... can you just set the resource to
app.*.js somehow?

~~~
treve
If you can write a <script> tag that references app.ab9a9a09fe9.js, presumably
you can write a HTTP header that references that same file, no?

~~~
waxjar
What about a static website served through nginx, for example?

~~~
StavrosK
I'm actually just doing that right now (changing my static website to work
with Netlify's Push). Presumably, your base HTML looks something like this:

    
    
      <link href="{{ "main.css"|asseturl }}" rel="stylesheet" type="text/css" />
    

Then, your _headers.j2 file should look like this:

    
    
      /*
        Link: <{{ "main.css"|asseturl }}>; rel=preload; as=stylesheet
    

Which will just be replaced with the correct value, same as in your HTML
template.

------
OJFord
> Developers love using the CLI because everything can be done from the
> command line.

What? Do users also love the UI because everything can be done by the user?

------
StavrosK
This is welcome, but doesn't seem to be ready. My site broke with SPDY errors
(wth?) when I enabled this.

~~~
calavera
Hey StavrosK, don't hesitate to reach out to Netlify support. I'd love to take
a look at your site to figure out what's going on there.

~~~
StavrosK
Yep, I already talked to Chris about it, thanks! I talked to you guys a week
ago about HTTP/2 Push, I didn't know you'd have it ready so soon. I'm eager to
get this working on stavros.io, so please feel free to email me so we can
debug this!

~~~
calavera
I just deployed a change that we think it should fix the problem in your site,
we're going to keep an eye on it \o/

------
judahtanthony
How does Netlify handle caching of push file? I would love to push my
global.css and global.js; however, I don't want those files to be pushed on
every subsequent request.

------
ezequiel-garzon
Do any browsers already provide a way to refuse pushed resources?

~~~
bfred_it
Why would you need this? The use case of Server Push is to download resources
earlier than a browser can request them, but will eventually require anyway.

What are you hoping to refuse?

~~~
ezequiel-garzon
Thanks for the reply, and good point. I guess I feel uneasy about letting the
server "push" at will, for instance when dealing with mobile data plans. But
come to think about it, I don't have much control on what I'll get once I
visit a website.

------
thinkMOAR
"You can read this article in the next version of Smashing Magazine,
completely hosted on Netlify."

No actually quite a few resources are served by third parties.

------
Zpalmtree
I read this as Netflix and was very confused for a while.

