Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mobile performance post #9106

Merged
merged 5 commits into from
Oct 16, 2018
Merged

Add mobile performance post #9106

merged 5 commits into from
Oct 16, 2018

Conversation

calcsam
Copy link
Contributor

@calcsam calcsam commented Oct 14, 2018

No description provided.

@calcsam calcsam requested a review from a team October 14, 2018 21:48
Copy link
Contributor

@DSchau DSchau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a number of comments. Nice work!

@@ -7,7 +7,7 @@ tags: ["content-mesh"]

_This is Part 2 of a series. You may want to read Part 1:_ [Delivering Modern Website Experiences: The Journey to a Content Mesh](/blog/2018-10-04-journey-to-the-content-mesh).

Web users’ expectations follow a simple law: they always increase over time.
Web users’ expectations follow a simple law: they always increase over time.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe

User expectations follow a simple law: they always increase over time.

(The apostrophe is correct, I just don't usually like using it like that 😅 )

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also should've commented on this way sooner!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll probably leave this as is now :) I like using "Web" in this sentence.


Why is that? Increased site complexity often distributes bottlenecks across multiple code points and teams of stakeholders. While performance checklists exist, they’ve ballooned to 40+ items -- making them costly and time-consuming for teams to implement.

As my co-founder Kyle Mathews likes to say (paraphrasing Tolstoy): "All fast websites are alike, but all slow websites are slow in different ways."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe tweak this to as our or as Gatsby's co-founder?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(also maybe just use a blockquote here)


Data from the HTTPArchive shows how long it's taken for the average page on the Internet to completely load all content (including images, script files, CSS files, etc.):

<figure>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just as info, you can just use [Web performance over time](./web-perf-over-time.png) and the gatsby-remark-images plugin should create this structure for you per the source

We need to enable showCaptions in gatsby-config.js in www though. Could be worth doing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll keep this as is for now -- if we want to enable showCaptions can use in future.


Second, the **growing complexity of websites**. Non-critical images, CSS, JS libraries, and 3rd party tracking software will often unintentionally end up on the critical path to page load:

- A marketing analyst drops a `<script>` tag from a hot new vendor inside a Google Tag Manager container. This triggering a blocking network call to a pixel provider on page loads. Time To Interactive (TTI) now averages 800ms longer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This triggers*


- The business unit of an e-commerce store needs additional inventory management tools, so they purchase a popular plugin in their CMS ecosystem that offers this functionality. What they don’t know is that this plugin adds additional database calls every time a user loads a product page, delaying overall page loads by 500ms.

With website performance rarely tracked, almost never systematically, and with no performance "owner", load times balloon by default.
Copy link
Contributor

@DSchau DSchau Oct 15, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe?

it's easy to see how load times can balloon.

instead of "load times balloon by default"


With website performance rarely tracked, almost never systematically, and with no performance "owner", load times balloon by default.

Like factory floors before the advent of [just-in-time manufacturing](https://en.wikipedia.org/wiki/Just-in-time_manufacturing), website page loading paths are clogged with work being done prematurely, creating resource contention and increasing cycle time.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice simile :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!


- Movements such as [Progressive Web Apps](https://developers.google.com/web/progressive-web-apps/) and the [JAMstack](https://jamstack.org/) have brought attention to site performance as a first-order goal.

_Performant_ is the new _responsive_.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


Payload optimization and delivery optimization are complementary approaches. That’s both good news -- you _can_ do both -- and bad news -- you often _need_ to do both.

For example, if you use a CDN to serve 3MB Javascript bundles, your site is still going to be slow, especially on medium- and low-end mobile devices.
Copy link
Contributor

@DSchau DSchau Oct 15, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and this is so often the case on most sites I've seen. React/Angular/et al without a non-JS story (static rendering, server rendering, etc.) and crazy bundle sizes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So true.

</figcaption>
</figure>

Performance is an _emergent characteristic_ of a system. It requires getting a lot little things right and is easy to mess up. Hence the Tolstoy quote.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe reference it again, just to keep it apparent?

@calcsam
Copy link
Contributor Author

calcsam commented Oct 16, 2018

Thanks @DSchau!

@calcsam calcsam merged commit c01d6dc into master Oct 16, 2018
@DSchau DSchau deleted the add-mobile-performance-post branch October 16, 2018 14:39
jedrichards pushed a commit to jedrichards/gatsby that referenced this pull request Nov 1, 2018
* mobile performance post

* new quotes

* copy changes

* modify chart title from part 3

* Update index.md
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants