SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
DELIVERING
RESPONSIBLY
SCOTT JEHL
Responding
https://www.flickr.com/photos/adactio/6153522068/
Basic Enhanced
Foremost:
We Must Deliver.
Speed broadens access.
Performance Priorities
Speed broadens access.
Not just a matter of empathy.
Access is our job.
More people access Facebook
over 2G than 4G.
https://twitter.com/BenedictEvans/status/513017790920290304
Benedict Evans
https://www.flickr.com/photos/lacantine/6234723672/
https://fbnewsroomus.files.wordpress.com/2015/02/state-of-connectivity1.pdf
Average webpage: 2 Megabytes!
5%
61kb
152kb
61kb
318kb
1,297kb
IMG JS CSS OTHER HTML FONTS
http://httparchive.org/interesting.php?a=All&l=Apr%2015%202015
Lightening our load
Optimizing everything that you can.
Easy, classic performance optimizations:
Optimize, Minify, Gzip
Don’t just optimize images;
Make them responsive!
<img src="small.jpg" srcset="large.png 2x" alt="…">
!
!
<picture>
<source srcset="large.png" media="(min-width: 800px)">
<source srcset="medium.jpg" media="(min-width: 400px)">
<img src="small.jpg" alt="…">
</picture>
Srcset & Picture
http://scottjehl.github.io/picturefill/
Reduce Framework Bloat
Reduce dependencies, make custom library builds, and UnCSS what you can.
Optimizing Assets:
A Lesser Concern?
“when it comes to your web browsing experience,
it turns out that latency, not bandwidth, is
likely the constraining factor today.
Ilya Grigorik
https://www.igvita.com/2012/07/19/latency-the-new-web-performance-bottleneck/
Prioritizing for progressive rendering
The Critical Path
Heading Heading
<link rel="stylesheet" href="a.css">
<link rel="stylesheet" href="fonts.css">
<script src="a.js"></script>
<script src="b.js"></script>
Detours on the path to a usable render
...
</head>
<head>
...
Detours on the path to a usable render
HTML CSS
JS
CSS
JS
Blank page
}
Stay on that
critical path!
http://webpagetest.org
Sub-1 Second Render:
Cram your initial view into the first 14kb of your HTML
“
Identify and “inline” the CSS necessary for
rendering the above-the-fold content
PageSpeed Insights
https://developers.google.com/speed/pagespeed/insights/
“The fold”
varies across devices...
http://paul.kinlan.me/detecting-critical-above-the-fold-css/
Original CSS
h1 { font-size: 1.2em; col… }
h2 { margin: 0; }
ol { color: red; }
li { color: blue; backgrou… }
li:hover { color: purple; … }
li:first-child { color: gr… }
li:last-child { color: pin… }
.footer { border-top: 1px … }
.copyright { font-size: 1.… }
h1 { font-size: 1.2em; col… }
h2 { margin: 0; }
ol { color: red; }
li { color: blue; backgrou… }
li:first-child { color: gr… }
Critical CSS
https://github.com/filamentgroup/grunt-criticalcss
criticalcss: {
home: {
options: {
outputfile : 'css/critical/critical-home.css',
filename : 'all.css',
url : 'http://fgwebsite.local'
}
},
services: {
options: {
outputfile : 'css/critical/critical-services.css',
filename : 'all.css',
url : 'http://fgwebsite.local/services/'
}
Critical CSS Configuration
Inlining your “critical” code
Load the rest in a non-blocking manner
First the CSS
<style>
body {
font-family: sans-serif;
}
div.foo {
…
</style>
Inlining critical CSS
...
</head>
<head>
...
<style>
<% include “path/to/critical/template.css” %>
</style>
Inlining critical CSS
...
</head>
<head>
...
<link rel=”preload” href=“all.css”>
Fetching the full CSS
<link rel=”preload” href=“all.css”
onload=“this.rel=‘stylesheet’”>
Applying the full CSS
Next, inline the critical JavaScript
If you have any...
<style>
<% include "critical.css" %>
</style>
<script>
<% include "initial.js" %>
</script>
Critical JS, inlined
...
</head>
<head>
...
Which JavaScript is “critical?”
• Ideally, none!
• functions for loading additional assets
• Feature tests? Important polyfills?
• Conditional logic for loading files
function loadCSS( href ){
var ss = window.document.createElement( "link" );
var ref = window.document.getElementsByTagName( "script" )[ 0 ];
ss.rel = "stylesheet";
ss.href = href;
ss.media = "only x";
ref.parentNode.insertBefore( ss, ref );
setTimeout( function(){
ss.media = "all";
} );
}
loadCSS( “/path/to/all.css” );
!
An async CSS loader for non-critical CSS
function preloadSupport(){
var link = document.createElement('link');
link.rel = 'PRELOAD';
return link.rel == 'preload';
}
Detecting rel=preload support
<link rel=”preload” href=“all.css” id=“allCSS”
onload=“this.rel=‘stylesheet’”>
<script>
function loadCSS(){ … }
function preloadSupport(){ … }
if( !preloadSupport() ){
loadCSS( document.getElementById( "allCSS" ).href );
}
</script>
<noscript><link href=“all.css” rel=“stylesheet”></noscript>
Polyfilling rel=preload with loadCSS
function loadJS( src ){
var js = document.createElement( "script" ),
ref = document.getElementsByTagName( "script" )[ 0 ];
js.src = src;
js.async = true;
ref.parentNode.insertBefore( js, ref );
}
// load a script!
loadJS( “/path/to/enhancements.js” );
A simple async. script file loader
<script src=”enhancements.js” async defer></script>
Or, async/defer is a good option…
!
if( document.querySelector && document.addEventListener ){
loadJS( "enhancements.js" );
}
…but dynamic loaders let you cut the mustard
...
</script>
</head>
<head>
<script>
...
<style>/* Critical styles go here */ </style>
<link rel=”preload” href=“all.css” as=“stylesheet” id=“allCSS”
onload=“this.rel=‘stylesheet’”>
<script>
/* some functions go here… */
if( !preloadSupport() ){
loadCSS( document.getElementById( "allCSS" ).href );
}
if( browserCutsTheMustard ){
loadJS( "enhancements.js" );
}
</script>
<noscript><link href=“all.css” rel=“stylesheet”></noscript>
Avoiding the FOIT.
http://www.filamentgroup.com/lab/font-events.html
Enabling fonts once loaded
h2 {
font-family: sans-serif;
}
.fonts-loaded h2 {
font-family: “Source Sans Pro", sans-serif;
}
Enabling fonts once loaded
new w.FontFaceObserver( "Source Sans Pro” )
.check()
.then( function(){
document.documentElement.className += " fonts-loaded";
});
Progressive font rendering
Standard
Optimized
Coming soon: CSS-based font-rendering!
@font-face {
font-family: foo;
...
}
body > h1 {
font-family: foo;
font-rendering: swap 3s;
}
Perceived Performance
Case Study
3G/Chrome First Usable Render: ~12.5 secs
Optimizations Made:
• Extract and Inline “Critical” CSS
• Load full CSS asynchronously
• Load scripts asynchronously (ads too!)
• Load fonts asynchronously
• Style fallback fonts to match custom font sizes
• Use font loading APIs to swap-in custom fonts once
loaded (allow fallback text to show first)
3G/Chrome First Usable Render: 3.9 secs
Wired.com rendering: before & after
3.9 secs 12.5 secs
weight does not need to increase wait
How we load stuff matters more than how much stuff we load
http://www.filamentgroup.com/lab/weight-wait.html
Looking Ahead
“if you have ever inlined a resource
(CSS, JS, or an image), you've been
"simulating" server push
Ilya Grigorik
https://www.igvita.com/2013/06/12/innovating-with-http-2.0-server-push/
HTTP/2 means no more:
• Inlining CSS, JS, or images
• Concatenating CSS & JavaScript files
• Domain Sharding
• Image sprites
This won’t happen
overnight.
Delivering responsibly
is our job.
Thanks!
@scottjehl, http://filamentgroup.com

Más contenido relacionado

La actualidad más candente

CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)
Zoe Gillenwater
 

La actualidad más candente (20)

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 ...
 
Responsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesResponsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and Techniques
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaks
 
[edUi] HTML5 Workshop
[edUi] HTML5 Workshop[edUi] HTML5 Workshop
[edUi] HTML5 Workshop
 
Webpack packing it all
Webpack packing it allWebpack packing it all
Webpack packing it all
 
[O'Reilly] HTML5 Design
[O'Reilly] HTML5 Design[O'Reilly] HTML5 Design
[O'Reilly] HTML5 Design
 
[heweb11] HTML5 Makeover
[heweb11] HTML5 Makeover[heweb11] HTML5 Makeover
[heweb11] HTML5 Makeover
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015
 
Real World Web components
Real World Web componentsReal World Web components
Real World Web components
 
Css3
Css3Css3
Css3
 
CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)
 
High Performance Social Plugins
High Performance Social PluginsHigh Performance Social Plugins
High Performance Social Plugins
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
 
Front end performance optimization
Front end performance optimizationFront end performance optimization
Front end performance optimization
 
Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Don't Over-React - just use Vue!
Don't Over-React - just use Vue!
 
Speak The Web: The HTML5 Experiments
Speak The Web: The HTML5 ExperimentsSpeak The Web: The HTML5 Experiments
Speak The Web: The HTML5 Experiments
 
Front End Performance
Front End PerformanceFront End Performance
Front End Performance
 
Responsive Web Design: Tips and Tricks
Responsive Web Design: Tips and TricksResponsive Web Design: Tips and Tricks
Responsive Web Design: Tips and Tricks
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
Front end performance tip
Front end performance tipFront end performance tip
Front end performance tip
 

Similar a Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015

Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)
Ontico
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版
Joseph Chiang
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Erin M. Kidwell
 

Similar a Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015 (20)

Build Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje JurišićBuild Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje Jurišić
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)
 
JavaScript Perfomance
JavaScript PerfomanceJavaScript Perfomance
JavaScript Perfomance
 
EnterJS 2015 - Continuous Integration for Frontend Code
EnterJS 2015 - Continuous Integration for Frontend CodeEnterJS 2015 - Continuous Integration for Frontend Code
EnterJS 2015 - Continuous Integration for Frontend Code
 
Website Performance Basics
Website Performance BasicsWebsite Performance Basics
Website Performance Basics
 
The new static resources framework
The new static resources frameworkThe new static resources framework
The new static resources framework
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 
Building Performance - ein Frontend-Build-Prozess für Java mit Maven
Building Performance - ein Frontend-Build-Prozess für Java mit MavenBuilding Performance - ein Frontend-Build-Prozess für Java mit Maven
Building Performance - ein Frontend-Build-Prozess für Java mit Maven
 
Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版
 
Faster Frontends
Faster FrontendsFaster Frontends
Faster Frontends
 
Web-Performance
Web-PerformanceWeb-Performance
Web-Performance
 
10 Tips to make your Website lightning-fast - SMX Stockholm 2012
10 Tips to make your Website lightning-fast - SMX Stockholm 201210 Tips to make your Website lightning-fast - SMX Stockholm 2012
10 Tips to make your Website lightning-fast - SMX Stockholm 2012
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
 
Packing it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to nowPacking it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to now
 
Prioritize your critical css and images to render your site fast velocity ny...
Prioritize your critical css and images to render your site fast  velocity ny...Prioritize your critical css and images to render your site fast  velocity ny...
Prioritize your critical css and images to render your site fast velocity ny...
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
 
Class15
Class15Class15
Class15
 
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
 

Más de beyond tellerrand

Más de beyond tellerrand (6)

Chip Kidd - ! Or ? - btconfBER2015
Chip Kidd - ! Or ? - btconfBER2015Chip Kidd - ! Or ? - btconfBER2015
Chip Kidd - ! Or ? - btconfBER2015
 
Content amid Chaos - beyond tellerrand Dusseldorf 2015
Content amid Chaos - beyond tellerrand Dusseldorf 2015Content amid Chaos - beyond tellerrand Dusseldorf 2015
Content amid Chaos - beyond tellerrand Dusseldorf 2015
 
Connecting The Digital To Analog - Brian Suda
Connecting The Digital To Analog - Brian SudaConnecting The Digital To Analog - Brian Suda
Connecting The Digital To Analog - Brian Suda
 
The Icon Design Process – Jon Hicks
The Icon Design Process – Jon HicksThe Icon Design Process – Jon Hicks
The Icon Design Process – Jon Hicks
 
CSS Lessons Learned The Hard Way – Zoe Gillenwater
CSS Lessons Learned The Hard Way – Zoe GillenwaterCSS Lessons Learned The Hard Way – Zoe Gillenwater
CSS Lessons Learned The Hard Way – Zoe Gillenwater
 
Dealing with the fall-out – Elliot Jay Stocks
Dealing with the fall-out – Elliot Jay StocksDealing with the fall-out – Elliot Jay Stocks
Dealing with the fall-out – Elliot Jay Stocks
 

Último

₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
Diya Sharma
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
imonikaupta
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 

Último (20)

2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
 
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
 
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceReal Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 

Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015