6 ms·
HTTP/2 Server Push on Netlify
- jitl 9y ago> 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 9y agoIf 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 9y agoThis 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 9y agoHow 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 9y agoIf 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 9y agoWhat about a static website served through nginx, for example?
- StavrosK 9y agoI'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.
- thearrow 9y agoFor example: a SPA webpack setup using html-webpack-plugin which generates the <script> tags in index.html for the different assets, later served by nginx or similar. How does one tell nginx the names of the files to push if they are generated dynamically? You have to put the names in a separate file and then somehow configure the server using that file?
- calavera 9y agothis webpack plugin might help you: https://gist.github.com/Kamshak/35630ec21df8dca27de3bb915f2d67e4 https://gist.github.com/Kamshak/35630ec21df8dca27de3bb915f2d... I have no idea why the original comment by the author is shadow banned.
- Svenskunganka 9y agoYou can make it part of your build process to generate a file with the headers needed, and during deploy it gets copied and/or configures the web server/platform you're running on.
- Kamshak 9y agoI suppose you are using webpack, i have just written a small plugin for this (assumes an SPA, writes the same js/css to /*): https://gist.github.com/Kamshak/35630ec21df8dca27de3bb915f2d67e4 https://gist.github.com/Kamshak/35630ec21df8dca27de3bb915f2d...
- ezequiel-garzon 9y agoDo any browsers already provide a way to refuse pushed resources?
- jbergstroem 9y agoYou'd have to handle this in service workers. You want this: https://datatracker.ietf.org/doc/draft-ietf-httpbis-cache-digest/ https://datatracker.ietf.org/doc/draft-ietf-httpbis-cache-di...
- bfred_it 9y agoWhy 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 9y agoThanks 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.
- Zpalmtree 9y agoI read this as Netflix and was very confused for a while.
- StavrosK 9y agoThis is welcome, but doesn't seem to be ready. My site broke with SPDY errors (wth?) when I enabled this.
- calavera 9y agoHey 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 9y agoYep, 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 9y agoI 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/
- OJFord 9y ago> 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?
- thinkMOAR 9y ago"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.
- judahtanthony 9y agoHow 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.