To push, or not to push?!

A presentation at FullStack Fest in in Barcelona, Spain by Patrick Hamann

To push, or not to push?! A journey of resource loading in the browser

To push, or not to push?! A journey of resource loading in the browser

Fastly

Fastly

Fastly

Fastly

Why?

Why?

“HTTP/2 will solve this” – Everybody

“HTTP/2 will solve this” – Everybody

Resource loading in the browser is hard.

Resource loading in the browser is hard.

Resource loading is hard

Resource loading is hard

How can we load our resources most efficiently?

How can we load our resources most efficiently?

What are my critical resources?

What are my critical resources?

A good loading strategy

A good loading strategy

Preload

Preload

What are my hidden sub-resources?

What are my hidden sub-resources?

Preload

Preload

How can I use Prelaod?

How can I use Prelaod?

FT.com waterfall before

FT.com waterfall before

FT.com waterfall after

FT.com waterfall after

Are indicating resource hints via the HTML response too late?

Are indicating resource hints via the HTML response too late?

Server Push

Server Push

So how can I push?

So how can I push?

Is indicating push via the HTML response too late?

Is indicating push via the HTML response too late?

Async push

Async push

Before / After

Before / After

What about the repeat view?

What about the repeat view?

Before / After

Before / After

PRPL Pattern

PRPL Pattern

The server has no knowledge of client cache state.

The server has no knowledge of client cache state.

So what’s the problem?

So what’s the problem?

Push cache semantics

Push cache semantics

HTTP/2 push is tougher than I thought

HTTP/2 push is tougher than I thought

HTTP/2 Server Push - Browser inconsistencies

HTTP/2 Server Push - Browser inconsistencies

When should I push?

When should I push?

The future

The future

Can we fix the problems with push?

Can we fix the problems with push?

Cache digests

Cache digests

Before / After

Before / After

This still seems too complicated…

This still seems too complicated…

103 Early hints

103 Early hints

IETF RFC8297 Early Hints - K. Oku https://tools.ietf.org/html/rfc8297

IETF RFC8297 Early Hints - K. Oku https://tools.ietf.org/html/rfc8297

103 Early hints benefits

103 Early hints benefits

Priority hints

Priority hints

Closing

Closing

HTTP/2 doesn’t solve everything

HTTP/2 doesn’t solve everything

Resource loading is hard.

Resource loading is hard.

Performance is for humans. Optimise for user experiences.

Performance is for humans. Optimise for user experiences.

Resource loading checklist:

Resource loading checklist:

Gracias!

Gracias!

HTTP/2 server push gives us the ability to proactively send assets to a browser without waiting for them to be requested. Sounds great, right?!

However, is this new mechanism really the silver bullet we all thought it was? Is it time to abandon our build systems and stop bundling our assets entirely? Or are lack of server support and browser inconsistencies holding us back? Lastly, what are new specifications such as cache digests and the 103 status code doing to improve the situation?

Using new research and real-world examples, this talk will take a deep dive into HTTP/2 server push, exploring the current and future best practices for loading assets in the browser. Giving us the knowledge to make better decisions when loading our web pages and ultimately leading to faster, more resilient user experiences.

Buzz and feedback

Here’s what was said about this presentation on Twitter.