Top Banner
Christopher M. Judd 10 Simple Performance Tips Every Web Developer Should Know
58

10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Apr 02, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Christopher M. Judd

10 Simple Performance Tips Every Web Developer

Should Know

Page 2: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Christopher M. JuddPresident/Consultant of

leader

Columbus Developer User Group (CIDUG)

Page 3: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Remarkable Ohio

Free

Developed for eTech Ohio and Ohio Historical Center

Page 4: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

University System Of Ohio

FreeDeveloped for eTech Ohio and University System Of Ohio

Page 5: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer
Page 6: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

80% of web sites experience performance problems in browser

Page 7: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer
Page 8: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer
Page 9: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Disclaimer: Every web site is unique

Page 10: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

1. Measure, Don’t Guess

Page 11: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

often we only measure the request, response and server execution time

Page 12: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Page Weight

sizecompositiondownload speed

Must consider cached and uncached

Page 13: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Waterfall Chart

Page 14: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Firebug HttpWatch

Yahoo! YSlow Google Page Speed

AOL Page TestFiddler

Page 15: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Firefox Plug-in

Free and Open Sourcehttp://getfirebug.com/

Page 16: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Free (disabledware) and Commercial Versions

IE and Firefox Plug-ins

Programmatic Automation Support

http://www.httpwatch.com

Page 17: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Grade

Firebug Plug-in

Recommendations

Yahoo! YSlow

http://developer.yahoo.com/yslow/

Page 18: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Google Page Speed

http://code.google.com/speed/page-speed/

Firebug Plug-in

Recommendations

Page 19: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Google Page Speed Activity

Detailed Activity

Page 20: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

http://webpagetest.org/

Free service

Runs tests from outsideyour network

Select speed• FIOS• DSL• Dial-up

Recommendations

Waterfall

Cached/Uncached

Screen shots

Page 21: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Profile JavaScript

Page 22: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Requests

uncachedcachedrefreshhard refresh

Page 23: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Uncached Requestdownloaded content

Page 24: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Cached Request

did not download content

sent date to validate cache

Page 25: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Refresh Request (F5)

did not download content

sent date to validate cache&

max-age to control cache

Page 26: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Hard Request (ctrl + F5)

downloaded content

did not send cache date&

sent hard clear cache command

Page 27: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

2. Use Optimized Content Hosts

Page 28: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

web server app server

put images, css, js and other contenton web server

Page 29: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

web server app server

put images, css, js and other contenton web server

Page 30: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

CDN

app server

Push the content to the edges

CDN CDN

Use Content Delivery Network

Amazon CloudFront

Limelight Networks

http://en.wikipedia.org/wiki/Limelight_Networks

http://ajax.googleapis.com/ajax/libs

Google JavaScript Libraries

Page 31: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

3. Reduce HTTP Requests

Page 32: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

combine images using sprites

element.style {background-position:-76px 0;margin-right:34px;width:66px;

}

.csb, .ss, #logo span, #rptglbl {background:transparent url(/images/nav_logo8.png) no-repeat scroll 0 0;overflow:hidden;

}

Page 33: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

combine JavaScript and Styles17 Java Script requests from same server

This couldn’t be combined?

Page 34: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

avoid duplicate content

Page 35: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

https://jawr.dev.java.net/

bundles JavaScript and CSS filesincludes only once

Page 36: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Never have a 404 - File Not Found!!!

Page 37: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

4. Externalize JavaScript & Styles

Page 38: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

<script>

function cnnad_getTld (hostname) { var data = hostname.split("."); if (data.length >= 2) { return (data[data.length-2] + "." + data[data.length-1]); } return(null);}

var cnnDocDomain = cnnad_getTld(location.hostname);if(cnnDocDomain) {document.domain = cnnDocDomain;}

function cnnGetId(query) { var keyValPairs = query.split('&'); if(!keyValPairs) { keyValPairs = new Array(); keyValPairs[keyValPairs.length]=query; } for(var counter=0; counter < keyValPairs.length;counter++) { var keyVal = keyValPairs[counter].split('='); if(keyVal[0]=='domId') { //alert("returning id: " + keyVal[1]); return keyVal[1]; } }}

</script>

Avoid Inlining JavaScript and Styles

lose cachingdifficult to minifydifficult to compress

Unless the page is really small and it avoids HTTP Requests

Page 39: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

5. Minify JavaScript & Styles

Page 40: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Remove whitespace, unnecessary characters and comments

/*! * jQuery JavaScript Library v1.4.2 * http://jquery.com/ * * Copyright 2010, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2010, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Sat Feb 13 22:33:48 2010 -0500 */(function( window, undefined ) {

// Define a local copy of jQueryvar jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context ); },

(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a)

{setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.t

ext||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChil

d(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?

d.call(a[o],o,e(a[o],b)):d,j);return a}return i?e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a)

{var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click"))

{a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?

f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=

j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem

from this to this

24 KB45 KB

Page 41: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

https://jawr.dev.java.net/

automatically compressesalternate between compressed and uncompressedbundles JavaScript and CSS filesincludes only once

Page 43: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

6. Compress Content

Page 44: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Browser says I support gzip and/or deflate

gzip JavaScript and Styles

Don’t compress images or PDFs

Server says here it is in gzip format

Combine with caching content tip!

Page 45: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

7. Cache Content

Page 46: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Add Expire HeadersWithout Expire Header

unnecessary request is made

date and time of cached content sent

Page 47: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Add Expire Headers

Remove ETags

With Expire Header

expire and max-age tell browser to cache until such time

Subsequent requests are not made until content expires

Page 48: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

8. Structure Page

Page 49: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

CSS

JavaScript

Use LINK in HEADto get progressive rendering

Blocks content from loading

Page 50: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

9. Optimize Images

Page 51: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Choose Image Format

GIFGraphics

Animations256 Colors

Single transparent Color

JPEG

PNG8 PNG32

PhotosLossy

True ColorsNo transparency

Graphics256 Colors

Alpha transparency

PhotosTrue Colors

Alpha transparency

Page 52: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Smush.it

Removes chunks, comments, application information and

EXIF

Reduces color palette

Converts GIF to PNG

Yahoo! YSlow

Page 53: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

10. Preload Content

Page 54: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Preloads

for

Page 55: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Review1. Measure, Don’t Guess2. Use Optimized Content Hosts3. Reduce HTTP Requests4. Externalize JavaScript & Styles5. Minify JavaScript & Styles6. Compress Content7. Cache Content8. Structure Page9. Optimize Images10. Preload Content 53

Page 56: 10 Simple Performance Tips Every Web Developer Should Know10 Simple Performance Tips Every Web Developer Should Know. Christopher M. Judd President/Consultant of leader Columbus Developer

Summary

• Improve performance across all pages• Win/Win/Win

–Improve client experience–Reduce server load–Make yourself more valuable

• Team effort– developers– content producers– operations