Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Performance Matters

Web Performance Matters

Topic regarding to web performance from Google IO 2013.

Mitch Chen

June 05, 2013
Tweet

More Decks by Mitch Chen

Other Decks in Programming

Transcript

  1. Google IO 2013 Sessions Jank Free: Chrome Rendering Performance True

    Grit: Debugging CSS & Render Performance Web Page Design with the GPU in mind Automating Performance Best Practices with PageSpeed 2
  2. 1. Focus on the user and all else will follow

    2. It’s best to do one thing really, really well 3.Fast is better than slow 4. Democracy on the web works 5. You don’t need to be at your desk to need an answer 6. You can make money without doing evil 7. There’s always more information out there 8. The need for information crosses all borders 9. You can be serious without a suit 10.great just isn’t good enough Google’s Ten Things 3
  3. The Rendering Cycle Build the DOM Calculate CSS property values

    Build the rendering tree Calculate layout Paint Composite 7
  4. The Rendering Cycle Build the DOM Calculate CSS property values

    Build the rendering tree Calculate layout Paint Composite }Style Recalculation }Layout Painting Compositing Layers 8
  5. Rendering 101 Paint fast Avoid accidental paints Don’t paint at

    ALL Eliminate layout Minimize paint rectangles Eliminate painting altogether 9
  6. Visually complex CSS Image decodes/resizes Redundant large empty layers How

    to position: fixed overflow: scroll hover effects touch listeners Unnecessary paints from: Demo (hover effects) Long paints from: Demo (drag and drop) 10
  7. How to var newWidth = myDiv.offsetWidth+10; //Read myDiv.style.width = newWidth+’px’;

    //Write var newHeight = myDiv.offsetHeight+10; //Read myDiv.style.height = newHeight+’px’; //Write Unnecessary repaint & reflow: 11
  8. How to var newWidth = myDiv.offsetWidth+10; //Read var newHeight =

    myDiv.offsetHeight+10; //Read myDiv.style.width = newWidth+’px’; //Write myDiv.style.height = newHeight+’px’; //Write Better repaint & reflow: 12
  9. How to var div = document.getElementById(“box”); lis = document.getElementByTagName(“li”); i,

    len; for(i=0; len=lis.length; i<len; i++) { lis[i].style.width = div.offsetWidth+’px’; } Unnecessary repaint & reflow: 13
  10. How to var div = document.getElementById(“box”); lis = document.getElementByTagName(“li”); widthToSet

    = div.offsetWidth, i, len; for(i=0; len=lis.length; i<len; i++) { lis[i].style.width = widthToSet+’px’; } Better repaint & reflow: Demo 14
  11. Layers Painted independently, composited on the GPU Can stretch, move,

    and fade without repainting GPU + Layers = Faster Rendering Too many layers = seriously bad time Demo2 Demo1 16
  12. Use Dev Tools Timeline Show paint rectangles Show composited layer

    borders chrome://tracing Continuous painting mode PageSpeed (Chrome Extension) 18