Wikimedia Performance Team/Frontend web performance training

From mediawiki.org
Jump to navigation Jump to search

Context[edit]

The Performance Team commissioned Jean-Pierre Vincent in 2020 and 2021 to provide remote training on the topic of Frontend Web Performance.

Format[edit]

The training is delivered remotely via Zoom, every week day over the course of a week, for a total of 5 sessions lasting 3.5 hours each.

The training is not recorded.

Alumni[edit]

The following current or former staff members have undergone this training:

Thalia Chan, Jan Drewniak, Željko Filipin, Samuel Guebo, Alex Hollender, Michael Holloway, Wolfgang Kandek, Roan Kattouw, Dayllan Maza, Harumi Monroy, Stephen Niedzielski, Linh Nguyen, Mew Ophaswongse, Abijeet Patro, Samuel Patton, Gabriel Pita, Nicholas Ray, Sam Reed, Jon Robson, Ed Sanders, Mateus Santos, Joseph Seddon, Aaron Schulz, Bernd Sitzmann, Sam Smith, Huei Tan, Stephanie Tran, Anne Tomasevich, Brion Vibber, Leila Zia.

Content[edit]

Here is an approximate skeleton of the training:

Introduction[edit]

  • Why being fast matters
  • Challenges

Defining test parameters[edit]

  • The mobile case
  • Tools

How to measure performance[edit]

  • WebPageTest and the critical path
  • Start Render, Meaningful Paint, Speed Index...

Mastering the cache[edit]

  • Classic cache, standard invalidation
  • Strategies and tools in practice

Web browsers and HTTP[edit]

  • Understanding latency theory
  • HTTP/2, HTTP/3
  • HTTPS

The critical path[edit]

  • CSS/JS loading strategies
  • Preloading
  • Compression

Fonts[edit]

  • Problems: FOIT, FOUT or white page?
  • Optimisation techniques
  • Native APIs

Images[edit]

  • JPG vs GIF vs PNG vs newer standards
  • Loading: normal, inline or lazy?
  • Compression techniques and tools
  • SVG and icon fonts

Third parties[edit]

  • Dangers
  • Integrating correctly

Loading javascript[edit]

  • The 6 ways to load JS
  • Optimising a Webpack bundle

Responsive UIs[edit]

  • Good DOM (and jQuery) practices
  • Browsers: layout, paint, composition
  • Understanding the JS/CSS profiler
  • Long and repetitive tasks

Monitoring performance[edit]

  • Synthetic
  • RUM

Customising WebPageTest[edit]

  • Testing complex scenarios

Offline support[edit]

  • Service workers, PWAs and Application Cache

User perception[edit]

  • User psychology
  • UI examples