SlideShare a Scribd company logo
Sanjeev ghai 12
the importance of frontend 
performance 
9% 91% 
17% 83% 
iGoogle, primed cache 
iGoogle, empty cache
Sanjeev ghai 12
Sanjeev ghai 12
Sanjeev ghai 12
Sept 2007
14 RULES 
1. MAKE FEWER HTTP REQUESTS 
2. USE A CDN 
3. ADD AN EXPIRES HEADER 
4. GZIP COMPONENTS 
5. PUT STYLESHEETS AT THE TOP 
6. PUT SCRIPTS AT THE BOTTOM 
7. AVOID CSS EXPRESSIONS 
8. MAKE JS AND CSS EXTERNAL 
9. REDUCE DNS LOOKUPS 
10.MINIFY JS 
11.AVOID REDIRECTS 
12.REMOVE DUPLICATE SCRIPTS 
13.CONFIGURE ETAGS 
14.MAKE AJAX CACHEABLE
June 2009
Even Faster Web Sites 
Splitting the initial payload 
Loading scripts without blocking 
Coupling asynchronous scripts 
Positioning inline scripts 
Sharding dominant domains 
Flushing the document early 
Using iframes sparingly 
Simplifying CSS Selectors 
Understanding Ajax performance..........Doug Crockford 
Creating responsive web apps............Ben Galbraith, Dion Almaer 
Writing efficient JavaScript.............Nicholas Zakas 
Scaling with Comet.....................Dylan Schiemann 
Going beyond gzipping...............Tony Gentilcore 
Optimizing images...................Stoyan Stefanov, Nicole Sullivan
Why focus on JavaScript? 
WFMaikcyYieSapbepheABoaodOocaoieakyL! 
YouTube
scripts block 
<script src="A.js"> blocks parallel 
downloads and rendering 
9 secs: IE 6-7, FF 3.0, Chr 1, Op 9-10, Saf 3 
7 secs: IE 8, FF 3.5(?), Chr 2, Saf 4
MSN 
MSN.com: parallel scripts 
Scripts and other resources downloaded 
in parallel! How? Secret sauce?! 
var p= 
g.getElementsByTagName("HEAD")[0]; 
var c=g.createElement("script"); 
c.type="text/javascript"; 
c.onreadystatechange=n; 
c.onerror=c.onload=k; 
c.src=e; 
p.appendChild(c)
Loading Scripts Without Blocking 
XHR Eval 
XHR Injection 
Script in Iframe 
Script DOM Element 
Script Defer 
document.write Script Tag
XHR Eval 
var xhrObj = getXHRObject(); 
xhrObj.onreadystatechange = 
function() { 
if ( xhrObj.readyState != 4 ) return; 
eval(xhrObj.responseText); 
}; 
xhrObj.open('GET', 'A.js', true); 
xhrObj.send(''); 
script must have same domain as main page 
must refactor script
XHR Injection 
var xhrObj = getXHRObject(); 
xhrObj.onreadystatechange = 
function() { 
if ( xhrObj.readyState != 4 ) return; 
var se=document.createElement('script'); 
document.getElementsByTagName('head') 
[0].appendChild(se); 
se.text = xhrObj.responseText; 
}; 
xhrObj.open('GET', 'A.js', true); 
xhrObj.send(''); 
script must have same domain as main page
Script in Iframe 
<iframe src='A.html' width=0 height=0 
frameborder=0 id=frame1></iframe> 
iframe must have same domain as main page 
must refactor script: 
// access iframe from main page 
window.frames[0].createNewDiv(); 
// access main page from iframe 
parent.document.createElement('div');
Script DOM Element 
var se = document.createElement('script'); 
se.src = 'http://anydomain.com/A.js'; 
document.getElementsByTagName('head') 
[0].appendChild(se); 
script and main page domains can differ 
no need to refactor JavaScript
Script Defer 
<script defer src='A.js'></script> 
only supported in IE (just landed in FF 3.1) 
script and main page domains can differ 
no need to refactor JavaScript
document.write Script Tag 
document.write("<script 
type='text/javascript' src='A.js'> 
</script>"); 
parallelization only works in IE 
parallel downloads for scripts, nothing else 
all document.writes must be in same 
script block
Load Scripts Without Blocking 
*Only other document.write scripts are downloaded in parallel (in the same script block).
and the winner is... 
XHR Eval 
XHR Injection 
Script in iframe 
Script DOM 
Element 
Script Defer 
Script DOM 
Element 
Script Defer 
Script DOM Element 
Script DOM Element (FF) 
Script Defer (IE) 
XHR Eval 
XHR Injection 
Script in iframe 
Script DOM Element (IE) 
XHR Injection 
XHR Eval 
Script DOM Element (IE) 
Script DOM Element (FF) 
Script Defer (IE) 
Managed XHR Eval 
Managed XHR Injection 
Managed XHR Injection 
Managed XHR Eval 
Managed XHR Injection 
Managed XHR Eval 
Script DOM Element 
Script DOM Element (FF) 
Script Defer (IE) 
Managed XHR Eval 
Managed XHR Injection 
different domains same domains 
no order 
preserve 
order 
no order 
no busy 
show busy 
no busy show busy 
preserve 
order
Sanjeev ghai 12
asynchronous JS example: menu.js 
<script type="text/javascript"> 
var domscript = document.createElement('script'); 
domscript.src = "menu.js"; 
document.getElementsByTagName('head') 
[0].appendChild(domscript); 
var aExamples = 
[ 
['couple-normal.php', 'Normal Script Src'], 
['couple-xhr-eval.php', 'XHR Eval'], 
... 
['managed-xhr.php', 'Managed XHR'] 
]; 
function init() { 
EFWS.Menu.createMenu('examplesbtn', aExamples); 
} 
init(); 
</script> 
script DOM element approach
before 
after
Loading Scripts Without Blocking 
*Only other document.write scripts are downloaded in parallel (in the same script block). 
!IE
what about 
inlined code 
that depends on the script?
coupling techniques 
hardcoded callback 
window onload 
timer 
degrading script tags 
script onload
technique 5: script onload 
<script type="text/javascript"> 
var aExamples = [['couple-normal.php', 'Normal Script Src'], ...]; 
function init() { 
EFWS.Menu.createMenu('examplesbtn', aExamples); 
} 
var domscript = document.createElement('script'); 
domscript.src = "menu.js"; 
domscript.onloadDone = false; 
domscript.onload = function() { 
if ( ! domscript.onloadDone ) { init(); } 
domscript.onloadDone = true; 
}; 
domscript.onreadystatechange = function() { 
if ( "loaded" === domscript.readyState ) { 
if ( ! domscript.onloadDone ) { init(); } 
domscript.onloadDone = true; 
} 
} 
document.getElementsByTagName('head')[0].appendChild(domscript); 
</script> 
pretty nice, medium complexity
going beyond gzipping 
Tony Gentilcore, Chapter 9, Even Faster 
Web Sites 
Rule 4: Gzip Components from HPWS 
HTTP/1.1 
request: Accept-Encoding: gzip,deflate 
response: Content-Encoding: gzip 
Apache 2.x: 
AddOutputFilterByType DEFLATE 
text/html text/css application/x-javascript
benefits of gzipping 
70% reduction in transfer size 
not just for HTML!! 
all text: JavaScript, CSS, XML, JSON 
not binary: images, PDF, Flash
so what's the issue? 
15% of your users get uncompressed responses 
surprize! why? 
old browsers? no 
Netscape Navigator 3 – 0.0% 
Netscape Communicator 4 – 0.1% 
Opera 3.5 – 0.0% 
IE <3 – 0.01% 
clue: most prevalent in the Middle East
who's stripping? 
proxy, A-V software Accept-Encoding header 
Ad Muncher stripped 
CA Internet Security Suite Accept-EncodXng: gzip, deflate 
CEQURUX stripped 
Citrix Application Firewall stripped 
ISA 2006 stripped 
McAfee Internet Security 6.0 XXXXXXXXXXXXXXX: +++++++++++++ 
Norton Internet Security 6.0 ---------------: ------------- 
Novell iChain 2.3 stripped 
Novell Client Firewall stripped 
WebWasher stripped 
ZoneAlarm Pro 5.5 XXXXXXXXXXXXXXX: XXXXXXXXXXXXX 
proxies and anti-virus software disable 
compression for easier response filtering
what to do 
don't assume compression 
go the extra mile to reduce response size 
• event delegation (-5%) 
• relative URLs (-3%) 
• minify HTML, JavaScript, and CSS (-4%) 
• use CSS rules over inline styles (-1%) 
• alias long JavaScript symbol names (??) 
Thanks, Tony! 
see Tony's chapter in Even Faster Web Sites
homage to Open Source 
UA Profiler 
Cuzillion 
Episodes 
Hammerhead 
SpriteMe
Sanjeev ghai 12
UA Profiler 
tracks browser performance traits 
http://stevesouders.com/ua/ 
go to the test page 
your browser automatically walks through 
the tests (requires JS) 
results recorded and shared publicly 
currently 20K test results, 13K unique 
testers, 70 browsers 
help out by running the test!
Sanjeev ghai 12
Cuzillion 
'cuz there are a zillion pages to check 
a tool for quickly constructing web pages to 
see how components interact 
http://stevesouders.com/cuzillion/
Sanjeev ghai 12
Episodes 
framework for timing web sites 
• based on JavaScript timers 
• works on Ajax web apps 
• uses window.postMessage (multiple listeners) 
• potential industry standard 
http://stevesouders.com/episodes/
Measuring Performance 
Episodes 
dev box synthetic 
testing 
bucket 
testing 
real user 
data 
Hammerhead
Sanjeev ghai 12
Hammerhead 
moving performance testing upstream 
http://stevesouders.com/hammerhead/ 
Firebug extension 
load M URLs N times, empty & primed cache 
record average & median time 
add'l features: 
export data 
load time measurement 
modal cache clearing 
combine with bandwidth throttler
Sanjeev ghai 12
SpriteMe 
don't say "bite me!#*", say "SpriteMe!" 
create sprites with ease 
http://spriteme.org/ 
bookmarklet 
sprite generator: 
coolRunnings by Jared Hirsch 
http://jaredhirsch.com/coolrunnings/about/ 
http://bitbucket.org/jared/coolrunnings/
takeaways 
focus on the frontend 
run YSlow 
(http://developer.yahoo.com/yslow) 
and Page Speed! 
(http://code.google.com/speed/page-speed/) 
speed matters
Bing: 
Yahoo: 
Google: 
AOL: 
Shopzilla: 
impact on revenue 
+2000 ms ® -4.3% revenue/user1 
+400 ms ® -5-9% full-page traffic2 
+400 ms ® -0.59% searches/user1 
fastest users ® +50% page views3 
-5000 ms ® +7-12% revenue4 
1 http://en.oreilly.com/velocity2009/public/schedule/detail/8523 
2 http://www.slideshare.net/stoyan/yslow-20-presentation 
3 http://en.oreilly.com/velocity2009/public/schedule/detail/7579 
4 http://en.oreilly.com/velocity2009/public/schedule/detail/7709
cost savings 
hardware – reduced load 
Shopzilla – 50% fewer servers 
bandwidth – reduced response size 
http://billwscott.com/share/presentations/2008/stanford/HPWP-RealWorld.pdf
if you want 
better user experience 
more revenue 
reduced operating costs 
the strategy is clear 
Even Faster Web Sites
1:00 – book signing at Barnes & Noble 
3:20 – free consulting at Google booth 
Steve Souders 
souders@google.com 
http://stevesouders.com/docs/oscon-20090722.ppt
Ad

More Related Content

What's hot (20)

Node Security: The Good, Bad & Ugly
Node Security: The Good, Bad & UglyNode Security: The Good, Bad & Ugly
Node Security: The Good, Bad & Ugly
Bishan Singh
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIs
Remy Sharp
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
DK Lee
 
Ruby MVC from scratch with Rack
Ruby MVC from scratch with RackRuby MVC from scratch with Rack
Ruby MVC from scratch with Rack
DonSchado
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js Platform
Domenic Denicola
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode Object
Rob Tweed
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
Siarhei Barysiuk
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Somkiat Puisungnoen
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4
Jim Jagielski
 
Front end performance tip
Front end performance tipFront end performance tip
Front end performance tip
Steve Yu
 
Front End Performance
Front End PerformanceFront End Performance
Front End Performance
Konstantin Käfer
 
Front end performance optimization
Front end performance optimizationFront end performance optimization
Front end performance optimization
Stevie T
 
Building an HTML5 Video Player
Building an HTML5 Video PlayerBuilding an HTML5 Video Player
Building an HTML5 Video Player
Jim Jeffers
 
Vue 淺談前端建置工具
Vue 淺談前端建置工具Vue 淺談前端建置工具
Vue 淺談前端建置工具
andyyou
 
Deploying
DeployingDeploying
Deploying
soon
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
Stoyan Stefanov
 
Rails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on RailsRails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on Rails
DonSchado
 
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Jeongkyu Shin
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
Alive Kuo
 
Client-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesClient-side JavaScript Vulnerabilities
Client-side JavaScript Vulnerabilities
Ory Segal
 
Node Security: The Good, Bad & Ugly
Node Security: The Good, Bad & UglyNode Security: The Good, Bad & Ugly
Node Security: The Good, Bad & Ugly
Bishan Singh
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIs
Remy Sharp
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
DK Lee
 
Ruby MVC from scratch with Rack
Ruby MVC from scratch with RackRuby MVC from scratch with Rack
Ruby MVC from scratch with Rack
DonSchado
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js Platform
Domenic Denicola
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode Object
Rob Tweed
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
Siarhei Barysiuk
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4
Jim Jagielski
 
Front end performance tip
Front end performance tipFront end performance tip
Front end performance tip
Steve Yu
 
Front end performance optimization
Front end performance optimizationFront end performance optimization
Front end performance optimization
Stevie T
 
Building an HTML5 Video Player
Building an HTML5 Video PlayerBuilding an HTML5 Video Player
Building an HTML5 Video Player
Jim Jeffers
 
Vue 淺談前端建置工具
Vue 淺談前端建置工具Vue 淺談前端建置工具
Vue 淺談前端建置工具
andyyou
 
Deploying
DeployingDeploying
Deploying
soon
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
Stoyan Stefanov
 
Rails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on RailsRails Girls: Programming, Web Applications and Ruby on Rails
Rails Girls: Programming, Web Applications and Ruby on Rails
DonSchado
 
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Jeongkyu Shin
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
Alive Kuo
 
Client-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesClient-side JavaScript Vulnerabilities
Client-side JavaScript Vulnerabilities
Ory Segal
 

Viewers also liked (9)

Olumide adeola pidan c
Olumide adeola pidan cOlumide adeola pidan c
Olumide adeola pidan c
Praveen kumar
 
Sanjeev ghei, sanjeev ghai income tax,
Sanjeev ghei, sanjeev ghai income tax,Sanjeev ghei, sanjeev ghai income tax,
Sanjeev ghei, sanjeev ghai income tax,
Praveen kumar
 
Olumide pidan
Olumide pidanOlumide pidan
Olumide pidan
Praveen kumar
 
Sanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income tax
Sanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income taxSanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income tax
Sanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income tax
Praveen kumar
 
Purva Reviews
Purva ReviewsPurva Reviews
Purva Reviews
Praveen kumar
 
olumide adeola pidan
olumide adeola pidanolumide adeola pidan
olumide adeola pidan
Praveen kumar
 
Sanjeev ghai 1
Sanjeev ghai 1Sanjeev ghai 1
Sanjeev ghai 1
Praveen kumar
 
Sanjeev ghei 3
Sanjeev ghei 3Sanjeev ghei 3
Sanjeev ghei 3
Praveen kumar
 
Sanjeev ghai income tax 12
Sanjeev ghai income tax 12Sanjeev ghai income tax 12
Sanjeev ghai income tax 12
Praveen kumar
 
Olumide adeola pidan c
Olumide adeola pidan cOlumide adeola pidan c
Olumide adeola pidan c
Praveen kumar
 
Sanjeev ghei, sanjeev ghai income tax,
Sanjeev ghei, sanjeev ghai income tax,Sanjeev ghei, sanjeev ghai income tax,
Sanjeev ghei, sanjeev ghai income tax,
Praveen kumar
 
Sanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income tax
Sanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income taxSanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income tax
Sanjeev ghai, sanjeev ghai irs, sanjeev ghei, sanjeev ghai income tax
Praveen kumar
 
olumide adeola pidan
olumide adeola pidanolumide adeola pidan
olumide adeola pidan
Praveen kumar
 
Sanjeev ghai income tax 12
Sanjeev ghai income tax 12Sanjeev ghai income tax 12
Sanjeev ghai income tax 12
Praveen kumar
 
Ad

Similar to Sanjeev ghai 12 (20)

Web 2.0 Expo: Even Faster Web Sites
Web 2.0 Expo: Even Faster Web SitesWeb 2.0 Expo: Even Faster Web Sites
Web 2.0 Expo: Even Faster Web Sites
Steve Souders
 
Web20expo 20080425
Web20expo 20080425Web20expo 20080425
Web20expo 20080425
Media Gorod
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
Timothy Fisher
 
Developing High Performance Web Apps
Developing High Performance Web AppsDeveloping High Performance Web Apps
Developing High Performance Web Apps
Timothy Fisher
 
Even Faster Web Sites at The Ajax Experience
Even Faster Web Sites at The Ajax ExperienceEven Faster Web Sites at The Ajax Experience
Even Faster Web Sites at The Ajax Experience
Steve Souders
 
Oscon 20080724
Oscon 20080724Oscon 20080724
Oscon 20080724
linkedin_resptest2
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
Anup Hariharan Nair
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
Bob Paulin
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
Chris Love
 
Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09
Steve Souders
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
Binary Studio
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
Brad Hill
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
Stoyan Stefanov
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.js
Soós Gábor
 
Webpack
Webpack Webpack
Webpack
Sofian Hadiwijaya
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
5.node js
5.node js5.node js
5.node js
Geunhyung Kim
 
HTML 5 - Overview
HTML 5 - OverviewHTML 5 - Overview
HTML 5 - Overview
Marcelio Leal
 
HTML5: huh, what is it good for?
HTML5: huh, what is it good for?HTML5: huh, what is it good for?
HTML5: huh, what is it good for?
Remy Sharp
 
Cape Cod Web Technology Meetup - 2
Cape Cod Web Technology Meetup - 2Cape Cod Web Technology Meetup - 2
Cape Cod Web Technology Meetup - 2
Asher Martin
 
Web 2.0 Expo: Even Faster Web Sites
Web 2.0 Expo: Even Faster Web SitesWeb 2.0 Expo: Even Faster Web Sites
Web 2.0 Expo: Even Faster Web Sites
Steve Souders
 
Web20expo 20080425
Web20expo 20080425Web20expo 20080425
Web20expo 20080425
Media Gorod
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
Timothy Fisher
 
Developing High Performance Web Apps
Developing High Performance Web AppsDeveloping High Performance Web Apps
Developing High Performance Web Apps
Timothy Fisher
 
Even Faster Web Sites at The Ajax Experience
Even Faster Web Sites at The Ajax ExperienceEven Faster Web Sites at The Ajax Experience
Even Faster Web Sites at The Ajax Experience
Steve Souders
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
Bob Paulin
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
Chris Love
 
Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09Even Faster Web Sites at jQuery Conference '09
Even Faster Web Sites at jQuery Conference '09
Steve Souders
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
Binary Studio
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
Brad Hill
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
Stoyan Stefanov
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.js
Soós Gábor
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
HTML5: huh, what is it good for?
HTML5: huh, what is it good for?HTML5: huh, what is it good for?
HTML5: huh, what is it good for?
Remy Sharp
 
Cape Cod Web Technology Meetup - 2
Cape Cod Web Technology Meetup - 2Cape Cod Web Technology Meetup - 2
Cape Cod Web Technology Meetup - 2
Asher Martin
 
Ad

More from Praveen kumar (10)

Olumide adeola pidan d
Olumide adeola pidan dOlumide adeola pidan d
Olumide adeola pidan d
Praveen kumar
 
Olumide adeola pidan b
Olumide adeola pidan bOlumide adeola pidan b
Olumide adeola pidan b
Praveen kumar
 
Olumide adeola pidan a
Olumide adeola pidan aOlumide adeola pidan a
Olumide adeola pidan a
Praveen kumar
 
Eschol Tech Solutions
Eschol Tech SolutionsEschol Tech Solutions
Eschol Tech Solutions
Praveen kumar
 
olumide adeola pidan
olumide adeola pidanolumide adeola pidan
olumide adeola pidan
Praveen kumar
 
Sanjeev ghai income tax
Sanjeev ghai income taxSanjeev ghai income tax
Sanjeev ghai income tax
Praveen kumar
 
Sanjeev ghei
Sanjeev gheiSanjeev ghei
Sanjeev ghei
Praveen kumar
 
Sanjeev ghei
Sanjeev gheiSanjeev ghei
Sanjeev ghei
Praveen kumar
 
Sanjeev ghai income tax
Sanjeev ghai income taxSanjeev ghai income tax
Sanjeev ghai income tax
Praveen kumar
 
Purva Reviews
Purva ReviewsPurva Reviews
Purva Reviews
Praveen kumar
 

Recently uploaded (20)

10.1155-2024-1048933Figurefig0008.pptx.ppt
10.1155-2024-1048933Figurefig0008.pptx.ppt10.1155-2024-1048933Figurefig0008.pptx.ppt
10.1155-2024-1048933Figurefig0008.pptx.ppt
suchandasaha7
 
behiriskfactorsxyzkskeb210217133906 (1).pdf
behiriskfactorsxyzkskeb210217133906 (1).pdfbehiriskfactorsxyzkskeb210217133906 (1).pdf
behiriskfactorsxyzkskeb210217133906 (1).pdf
ShakibulHasan14
 
Download Chimera Tool Setup V42.47.0924 [Latest Version]
Download Chimera Tool Setup V42.47.0924 [Latest Version]Download Chimera Tool Setup V42.47.0924 [Latest Version]
Download Chimera Tool Setup V42.47.0924 [Latest Version]
Designer
 
Templates Wind Generator.pdf ahí. Ais d Ai d f
Templates Wind Generator.pdf ahí. Ais d Ai d fTemplates Wind Generator.pdf ahí. Ais d Ai d f
Templates Wind Generator.pdf ahí. Ais d Ai d f
jeremysegundob
 
DOC-20250121-WA0008._20250121_105938_0000.pptx
DOC-20250121-WA0008._20250121_105938_0000.pptxDOC-20250121-WA0008._20250121_105938_0000.pptx
DOC-20250121-WA0008._20250121_105938_0000.pptx
laugolac31
 
325295919-AAC-Blocks-Seminar-Presentation.pdf
325295919-AAC-Blocks-Seminar-Presentation.pdf325295919-AAC-Blocks-Seminar-Presentation.pdf
325295919-AAC-Blocks-Seminar-Presentation.pdf
shivsin165
 
dFdDVWeb_Design_Basics_Presentation.pptx
dFdDVWeb_Design_Basics_Presentation.pptxdFdDVWeb_Design_Basics_Presentation.pptx
dFdDVWeb_Design_Basics_Presentation.pptx
AKSHAYKAMBLE806728
 
𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀
𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀
𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀
Friends of Figm a, Sydney
 
Take this ppt refference and give content on mahindra commitment to sustainab...
Take this ppt refference and give content on mahindra commitment to sustainab...Take this ppt refference and give content on mahindra commitment to sustainab...
Take this ppt refference and give content on mahindra commitment to sustainab...
kochars428
 
Design of a Low-Power VLSI Router for Network-on-Chip.pptx
Design of a Low-Power VLSI Router for Network-on-Chip.pptxDesign of a Low-Power VLSI Router for Network-on-Chip.pptx
Design of a Low-Power VLSI Router for Network-on-Chip.pptx
BapujiBanothu
 
Internet Download Manager Crack Patch Latest IDM Free Download
Internet Download Manager Crack Patch Latest IDM Free DownloadInternet Download Manager Crack Patch Latest IDM Free Download
Internet Download Manager Crack Patch Latest IDM Free Download
Designer
 
19 Best B,u,y Verified Cash App Accounts
19 Best B,u,y Verified Cash App Accounts19 Best B,u,y Verified Cash App Accounts
19 Best B,u,y Verified Cash App Accounts
https://sellsusa.com/product/buy-verified-cash-app-accounts/
 
AR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdf
AR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdfAR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdf
AR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdf
akshayap23
 
Lori Vanzant's portfolio. Please take a look!
Lori Vanzant's portfolio. Please take a look!Lori Vanzant's portfolio. Please take a look!
Lori Vanzant's portfolio. Please take a look!
vanzan01
 
MOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdf
MOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdfMOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdf
MOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdf
asfianoor1
 
Oversized Off White Pulka Dot Cotton Shirt
Oversized Off White Pulka Dot Cotton ShirtOversized Off White Pulka Dot Cotton Shirt
Oversized Off White Pulka Dot Cotton Shirt
ZNKL.in
 
Steam-Education-PowerPoint-Templates.pptx
Steam-Education-PowerPoint-Templates.pptxSteam-Education-PowerPoint-Templates.pptx
Steam-Education-PowerPoint-Templates.pptx
andripapa1
 
COTTER and KNUCKleeeeeeeeeeeeeeeeeee.pptx
COTTER and  KNUCKleeeeeeeeeeeeeeeeeee.pptxCOTTER and  KNUCKleeeeeeeeeeeeeeeeeee.pptx
COTTER and KNUCKleeeeeeeeeeeeeeeeeee.pptx
ayushjadon04
 
presentation on healing architecture .pptx
presentation on healing architecture .pptxpresentation on healing architecture .pptx
presentation on healing architecture .pptx
buildnpl
 
An updated content measurement model - Elle Geraghty Content Strategy.pdf
An updated content measurement model - Elle Geraghty Content Strategy.pdfAn updated content measurement model - Elle Geraghty Content Strategy.pdf
An updated content measurement model - Elle Geraghty Content Strategy.pdf
Elle Geraghty
 
10.1155-2024-1048933Figurefig0008.pptx.ppt
10.1155-2024-1048933Figurefig0008.pptx.ppt10.1155-2024-1048933Figurefig0008.pptx.ppt
10.1155-2024-1048933Figurefig0008.pptx.ppt
suchandasaha7
 
behiriskfactorsxyzkskeb210217133906 (1).pdf
behiriskfactorsxyzkskeb210217133906 (1).pdfbehiriskfactorsxyzkskeb210217133906 (1).pdf
behiriskfactorsxyzkskeb210217133906 (1).pdf
ShakibulHasan14
 
Download Chimera Tool Setup V42.47.0924 [Latest Version]
Download Chimera Tool Setup V42.47.0924 [Latest Version]Download Chimera Tool Setup V42.47.0924 [Latest Version]
Download Chimera Tool Setup V42.47.0924 [Latest Version]
Designer
 
Templates Wind Generator.pdf ahí. Ais d Ai d f
Templates Wind Generator.pdf ahí. Ais d Ai d fTemplates Wind Generator.pdf ahí. Ais d Ai d f
Templates Wind Generator.pdf ahí. Ais d Ai d f
jeremysegundob
 
DOC-20250121-WA0008._20250121_105938_0000.pptx
DOC-20250121-WA0008._20250121_105938_0000.pptxDOC-20250121-WA0008._20250121_105938_0000.pptx
DOC-20250121-WA0008._20250121_105938_0000.pptx
laugolac31
 
325295919-AAC-Blocks-Seminar-Presentation.pdf
325295919-AAC-Blocks-Seminar-Presentation.pdf325295919-AAC-Blocks-Seminar-Presentation.pdf
325295919-AAC-Blocks-Seminar-Presentation.pdf
shivsin165
 
dFdDVWeb_Design_Basics_Presentation.pptx
dFdDVWeb_Design_Basics_Presentation.pptxdFdDVWeb_Design_Basics_Presentation.pptx
dFdDVWeb_Design_Basics_Presentation.pptx
AKSHAYKAMBLE806728
 
𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀
𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀
𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗳𝗼𝗿 𝗮𝗹𝗹: 𝗜𝗻𝗰𝗹𝘂𝘀𝗶𝘃𝗲 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲 𝗳𝗼𝗿 𝗕𝗲𝘁𝘁𝗲𝗿 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝘀
Friends of Figm a, Sydney
 
Take this ppt refference and give content on mahindra commitment to sustainab...
Take this ppt refference and give content on mahindra commitment to sustainab...Take this ppt refference and give content on mahindra commitment to sustainab...
Take this ppt refference and give content on mahindra commitment to sustainab...
kochars428
 
Design of a Low-Power VLSI Router for Network-on-Chip.pptx
Design of a Low-Power VLSI Router for Network-on-Chip.pptxDesign of a Low-Power VLSI Router for Network-on-Chip.pptx
Design of a Low-Power VLSI Router for Network-on-Chip.pptx
BapujiBanothu
 
Internet Download Manager Crack Patch Latest IDM Free Download
Internet Download Manager Crack Patch Latest IDM Free DownloadInternet Download Manager Crack Patch Latest IDM Free Download
Internet Download Manager Crack Patch Latest IDM Free Download
Designer
 
AR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdf
AR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdfAR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdf
AR.AKSHAYA PAMBALATH-PORTFOLIOFINAL_.pdf
akshayap23
 
Lori Vanzant's portfolio. Please take a look!
Lori Vanzant's portfolio. Please take a look!Lori Vanzant's portfolio. Please take a look!
Lori Vanzant's portfolio. Please take a look!
vanzan01
 
MOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdf
MOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdfMOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdf
MOCCAE SUSTAINABLE TROPHY 2025 Presentation.pdf
asfianoor1
 
Oversized Off White Pulka Dot Cotton Shirt
Oversized Off White Pulka Dot Cotton ShirtOversized Off White Pulka Dot Cotton Shirt
Oversized Off White Pulka Dot Cotton Shirt
ZNKL.in
 
Steam-Education-PowerPoint-Templates.pptx
Steam-Education-PowerPoint-Templates.pptxSteam-Education-PowerPoint-Templates.pptx
Steam-Education-PowerPoint-Templates.pptx
andripapa1
 
COTTER and KNUCKleeeeeeeeeeeeeeeeeee.pptx
COTTER and  KNUCKleeeeeeeeeeeeeeeeeee.pptxCOTTER and  KNUCKleeeeeeeeeeeeeeeeeee.pptx
COTTER and KNUCKleeeeeeeeeeeeeeeeeee.pptx
ayushjadon04
 
presentation on healing architecture .pptx
presentation on healing architecture .pptxpresentation on healing architecture .pptx
presentation on healing architecture .pptx
buildnpl
 
An updated content measurement model - Elle Geraghty Content Strategy.pdf
An updated content measurement model - Elle Geraghty Content Strategy.pdfAn updated content measurement model - Elle Geraghty Content Strategy.pdf
An updated content measurement model - Elle Geraghty Content Strategy.pdf
Elle Geraghty
 

Sanjeev ghai 12

  • 2. the importance of frontend performance 9% 91% 17% 83% iGoogle, primed cache iGoogle, empty cache
  • 7. 14 RULES 1. MAKE FEWER HTTP REQUESTS 2. USE A CDN 3. ADD AN EXPIRES HEADER 4. GZIP COMPONENTS 5. PUT STYLESHEETS AT THE TOP 6. PUT SCRIPTS AT THE BOTTOM 7. AVOID CSS EXPRESSIONS 8. MAKE JS AND CSS EXTERNAL 9. REDUCE DNS LOOKUPS 10.MINIFY JS 11.AVOID REDIRECTS 12.REMOVE DUPLICATE SCRIPTS 13.CONFIGURE ETAGS 14.MAKE AJAX CACHEABLE
  • 9. Even Faster Web Sites Splitting the initial payload Loading scripts without blocking Coupling asynchronous scripts Positioning inline scripts Sharding dominant domains Flushing the document early Using iframes sparingly Simplifying CSS Selectors Understanding Ajax performance..........Doug Crockford Creating responsive web apps............Ben Galbraith, Dion Almaer Writing efficient JavaScript.............Nicholas Zakas Scaling with Comet.....................Dylan Schiemann Going beyond gzipping...............Tony Gentilcore Optimizing images...................Stoyan Stefanov, Nicole Sullivan
  • 10. Why focus on JavaScript? WFMaikcyYieSapbepheABoaodOocaoieakyL! YouTube
  • 11. scripts block <script src="A.js"> blocks parallel downloads and rendering 9 secs: IE 6-7, FF 3.0, Chr 1, Op 9-10, Saf 3 7 secs: IE 8, FF 3.5(?), Chr 2, Saf 4
  • 12. MSN MSN.com: parallel scripts Scripts and other resources downloaded in parallel! How? Secret sauce?! var p= g.getElementsByTagName("HEAD")[0]; var c=g.createElement("script"); c.type="text/javascript"; c.onreadystatechange=n; c.onerror=c.onload=k; c.src=e; p.appendChild(c)
  • 13. Loading Scripts Without Blocking XHR Eval XHR Injection Script in Iframe Script DOM Element Script Defer document.write Script Tag
  • 14. XHR Eval var xhrObj = getXHRObject(); xhrObj.onreadystatechange = function() { if ( xhrObj.readyState != 4 ) return; eval(xhrObj.responseText); }; xhrObj.open('GET', 'A.js', true); xhrObj.send(''); script must have same domain as main page must refactor script
  • 15. XHR Injection var xhrObj = getXHRObject(); xhrObj.onreadystatechange = function() { if ( xhrObj.readyState != 4 ) return; var se=document.createElement('script'); document.getElementsByTagName('head') [0].appendChild(se); se.text = xhrObj.responseText; }; xhrObj.open('GET', 'A.js', true); xhrObj.send(''); script must have same domain as main page
  • 16. Script in Iframe <iframe src='A.html' width=0 height=0 frameborder=0 id=frame1></iframe> iframe must have same domain as main page must refactor script: // access iframe from main page window.frames[0].createNewDiv(); // access main page from iframe parent.document.createElement('div');
  • 17. Script DOM Element var se = document.createElement('script'); se.src = 'http://anydomain.com/A.js'; document.getElementsByTagName('head') [0].appendChild(se); script and main page domains can differ no need to refactor JavaScript
  • 18. Script Defer <script defer src='A.js'></script> only supported in IE (just landed in FF 3.1) script and main page domains can differ no need to refactor JavaScript
  • 19. document.write Script Tag document.write("<script type='text/javascript' src='A.js'> </script>"); parallelization only works in IE parallel downloads for scripts, nothing else all document.writes must be in same script block
  • 20. Load Scripts Without Blocking *Only other document.write scripts are downloaded in parallel (in the same script block).
  • 21. and the winner is... XHR Eval XHR Injection Script in iframe Script DOM Element Script Defer Script DOM Element Script Defer Script DOM Element Script DOM Element (FF) Script Defer (IE) XHR Eval XHR Injection Script in iframe Script DOM Element (IE) XHR Injection XHR Eval Script DOM Element (IE) Script DOM Element (FF) Script Defer (IE) Managed XHR Eval Managed XHR Injection Managed XHR Injection Managed XHR Eval Managed XHR Injection Managed XHR Eval Script DOM Element Script DOM Element (FF) Script Defer (IE) Managed XHR Eval Managed XHR Injection different domains same domains no order preserve order no order no busy show busy no busy show busy preserve order
  • 23. asynchronous JS example: menu.js <script type="text/javascript"> var domscript = document.createElement('script'); domscript.src = "menu.js"; document.getElementsByTagName('head') [0].appendChild(domscript); var aExamples = [ ['couple-normal.php', 'Normal Script Src'], ['couple-xhr-eval.php', 'XHR Eval'], ... ['managed-xhr.php', 'Managed XHR'] ]; function init() { EFWS.Menu.createMenu('examplesbtn', aExamples); } init(); </script> script DOM element approach
  • 25. Loading Scripts Without Blocking *Only other document.write scripts are downloaded in parallel (in the same script block). !IE
  • 26. what about inlined code that depends on the script?
  • 27. coupling techniques hardcoded callback window onload timer degrading script tags script onload
  • 28. technique 5: script onload <script type="text/javascript"> var aExamples = [['couple-normal.php', 'Normal Script Src'], ...]; function init() { EFWS.Menu.createMenu('examplesbtn', aExamples); } var domscript = document.createElement('script'); domscript.src = "menu.js"; domscript.onloadDone = false; domscript.onload = function() { if ( ! domscript.onloadDone ) { init(); } domscript.onloadDone = true; }; domscript.onreadystatechange = function() { if ( "loaded" === domscript.readyState ) { if ( ! domscript.onloadDone ) { init(); } domscript.onloadDone = true; } } document.getElementsByTagName('head')[0].appendChild(domscript); </script> pretty nice, medium complexity
  • 29. going beyond gzipping Tony Gentilcore, Chapter 9, Even Faster Web Sites Rule 4: Gzip Components from HPWS HTTP/1.1 request: Accept-Encoding: gzip,deflate response: Content-Encoding: gzip Apache 2.x: AddOutputFilterByType DEFLATE text/html text/css application/x-javascript
  • 30. benefits of gzipping 70% reduction in transfer size not just for HTML!! all text: JavaScript, CSS, XML, JSON not binary: images, PDF, Flash
  • 31. so what's the issue? 15% of your users get uncompressed responses surprize! why? old browsers? no Netscape Navigator 3 – 0.0% Netscape Communicator 4 – 0.1% Opera 3.5 – 0.0% IE <3 – 0.01% clue: most prevalent in the Middle East
  • 32. who's stripping? proxy, A-V software Accept-Encoding header Ad Muncher stripped CA Internet Security Suite Accept-EncodXng: gzip, deflate CEQURUX stripped Citrix Application Firewall stripped ISA 2006 stripped McAfee Internet Security 6.0 XXXXXXXXXXXXXXX: +++++++++++++ Norton Internet Security 6.0 ---------------: ------------- Novell iChain 2.3 stripped Novell Client Firewall stripped WebWasher stripped ZoneAlarm Pro 5.5 XXXXXXXXXXXXXXX: XXXXXXXXXXXXX proxies and anti-virus software disable compression for easier response filtering
  • 33. what to do don't assume compression go the extra mile to reduce response size • event delegation (-5%) • relative URLs (-3%) • minify HTML, JavaScript, and CSS (-4%) • use CSS rules over inline styles (-1%) • alias long JavaScript symbol names (??) Thanks, Tony! see Tony's chapter in Even Faster Web Sites
  • 34. homage to Open Source UA Profiler Cuzillion Episodes Hammerhead SpriteMe
  • 36. UA Profiler tracks browser performance traits http://stevesouders.com/ua/ go to the test page your browser automatically walks through the tests (requires JS) results recorded and shared publicly currently 20K test results, 13K unique testers, 70 browsers help out by running the test!
  • 38. Cuzillion 'cuz there are a zillion pages to check a tool for quickly constructing web pages to see how components interact http://stevesouders.com/cuzillion/
  • 40. Episodes framework for timing web sites • based on JavaScript timers • works on Ajax web apps • uses window.postMessage (multiple listeners) • potential industry standard http://stevesouders.com/episodes/
  • 41. Measuring Performance Episodes dev box synthetic testing bucket testing real user data Hammerhead
  • 43. Hammerhead moving performance testing upstream http://stevesouders.com/hammerhead/ Firebug extension load M URLs N times, empty & primed cache record average & median time add'l features: export data load time measurement modal cache clearing combine with bandwidth throttler
  • 45. SpriteMe don't say "bite me!#*", say "SpriteMe!" create sprites with ease http://spriteme.org/ bookmarklet sprite generator: coolRunnings by Jared Hirsch http://jaredhirsch.com/coolrunnings/about/ http://bitbucket.org/jared/coolrunnings/
  • 46. takeaways focus on the frontend run YSlow (http://developer.yahoo.com/yslow) and Page Speed! (http://code.google.com/speed/page-speed/) speed matters
  • 47. Bing: Yahoo: Google: AOL: Shopzilla: impact on revenue +2000 ms ® -4.3% revenue/user1 +400 ms ® -5-9% full-page traffic2 +400 ms ® -0.59% searches/user1 fastest users ® +50% page views3 -5000 ms ® +7-12% revenue4 1 http://en.oreilly.com/velocity2009/public/schedule/detail/8523 2 http://www.slideshare.net/stoyan/yslow-20-presentation 3 http://en.oreilly.com/velocity2009/public/schedule/detail/7579 4 http://en.oreilly.com/velocity2009/public/schedule/detail/7709
  • 48. cost savings hardware – reduced load Shopzilla – 50% fewer servers bandwidth – reduced response size http://billwscott.com/share/presentations/2008/stanford/HPWP-RealWorld.pdf
  • 49. if you want better user experience more revenue reduced operating costs the strategy is clear Even Faster Web Sites
  • 50. 1:00 – book signing at Barnes & Noble 3:20 – free consulting at Google booth Steve Souders [email protected] http://stevesouders.com/docs/oscon-20090722.ppt

Editor's Notes

  • #2: cc: http://www.flickr.com/photos/rollerfan/2868949733/
  • #3: Data source: Steve Souders Tested on IE6 on Comcast cable modem (~5 mbps) medium powered PC, April 2008.
  • #4: Ten top sites according to Alexa.com. Data source: Steve Souders Tested on IE6 on Comcast cable modem (~5 mbps) medium powered PC, April 2008. http://www.aol.com/ http://www.ebay.com/ http://www.facebook.com/ http://www.google.com/search?hl=en&amp;q=flowers http://www.myspace.com/ http://www.msn.com/ http://search.live.com/results.aspx?q=flowers&amp;mkt=en-us&amp;scope=&amp;FORM=LIVSOP http://en.wikipedia.org/wiki/Flowers http://www.yahoo.com/ http://www.youtube.com/ For Google and Live Search there are so few components (2-4) and they&amp;apos;re mostly cacheable so the HTML document is a bigger percentage.
  • #5: If you could cut performance in half, FE changes would be 40-45%, while BE would be only 5-10%. BE changes are typically more complex: rearchitecture, optimize code, add/modify hw, distribute databases, etc. FE is simpler: change web server config, place scripts and stylesheets differently in the page, combine requests, etc. I’ve worked with dev teams to cut response times on 50 properties, often by 25% or more. And feedback from other companies is similar. Permission to use photo given by Technicolor: http://flickr.com/photos/technicolor/44988148/
  • #10: photo courtesy of Vicki &amp; Chuck Rogers: http://www.flickr.com/photos/two-wrongs/205467442/
  • #13: Data Source: Steve Souders aol76% ebay45% facebook41% google42% live search9% msn37% myspace37% yahoo45% youtube60% wikipedia26% average42%
  • #15: Of the ten top sites, MSN.com (Script DOM Element), Live Search (Script in Iframe), and Yahoo (Script DOM Element) use advanced script loading techniques.
  • #16: All of these allow for parallel downloads, but none of them allow for parallel JS execution – that&amp;apos;s not possible (currently, WebKit is doing some stuff on that).
  • #23: Audio (IE &amp;quot;click&amp;quot;) is another busy indicator. Delayed rendering and delayed onload (&amp;quot;done&amp;quot;) are other busy indicators. Sometimes busy indicators are bad, sometimes good.
  • #24: Data source: Steve Souders Audio (IE &amp;quot;click&amp;quot;) is another busy indicator. Delayed rendering and delayed onload (&amp;quot;done&amp;quot;) are other busy indicators. Sometimes busy indicators are bad, sometimes good.
  • #26: Data source: Steve Souders
  • #27: I&amp;apos;ll do JavaScript and PHP implementations of this logic soon.
  • #28: Permission to use photo given by Reciprocity: http://flickr.com/photos/alanjaras/76000107/
  • #33: Data source: Steve Souders
  • #35: Newer browsers (IE8, Saf4, Chr2) work, but mainstream browsers need a workaround.
  • #40: putting code in the script block doesn&amp;apos;t work in any browser; you have to add stuff to the external script this doesn&amp;apos;t load asynchronously
  • #48: Newer browsers (IE8, Saf4, Chr2) work, but mainstream browsers need a workaround.
  • #51: Newer browsers (IE8, Saf4, Chr2) work, but mainstream browsers need a workaround.
  • #53: loadInterval is 420 ms
  • #82: 72 years = 2,270,592,000 seconds = 500ms * 4.4B page views
  • #83: 72 years = 2,270,592,000 seconds = 500ms * 4.4B page views
  • #84: 72 years = 2,270,592,000 seconds = 500ms * 4.4B page views
  • #85: 72 years = 2,270,592,000 seconds = 500ms * 4.4B page views
  • #86: &amp;quot;thank you&amp;quot; by nj dodge: http://flickr.com/photos/nj_dodge/187190601/