SlideShare uma empresa Scribd logo
1 de 19
Latency Kills
Optimize your apps for latency




Shishir Birmiwal
Software Engineer



                                 Google Confidential and Proprietary   1
Is latency that bad?
Why all the fuss?
Lets take a pop quiz!




                        Google Confidential and Proprietary   2
Question# 1




Have you closed a page
because it didn't load up in time?




                                     Google Confidential and Proprietary
Question# 2




Have you re-clicked links?




                             Google Confidential and Proprietary
Question# 3




How would you feel if you have to wait 15
seconds between views?




                                     Google Confidential and Proprietary
Latency Kills


• Amazon reported that 100ms of latency costs sales by 1%
• An additional 500ms latency saw Google search usage drop by 20%
• Users perceive Quality and Ease of Use with lower latency




                                                              Google Confidential and Proprietary
Sources of latency
Why do we have latency?




                          Google Confidential and Proprietary   7
Sources of latency



             fetch page
                                               gadget xml

             fetch gadget iframe

             fetch social data
    Client   fetch backend data    Container                            Application
   Browser                          (orkut)    backend data              Backend


               content render




                                                              Google Confidential and Proprietary
Kill latency
Optimize your app




                    Google Confidential and Proprietary   9
Optimize your app


• Batch requests
• Caches are your friends
• Minify static content
• Be lean and mean
• Think ahead
• Best practices




                            Google Confidential and Proprietary
Optimize your app


Batch Requests
Put multiple independent requests together
var idspec = opensocial.newIdSpec({ quot;userIdquot; : quot;OWNERquot;, quot;groupIdquot; : quot;FRIENDSquot; });
var fields = [ quot;AppField1quot;, quot;AppField2quot;, quot;AppField3quot; ];
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), quot;get_ownerquot;);
req.add(req.newFetchPeopleRequest(idspec), quot;get_friendsquot;);
req.add(req.newFetchPersonAppDataRequest(idSpec, fields), quot;owner_dataquot;);
req.send(response);




                                                                  Google Confidential and Proprietary
Caches are your friends


Proxy Content
     Use gadgets.io.getProxyUrl(url) to get a proxy URL
     var imgUrl = gadgets.io.getProxyUrl('http://example.org/image.png');
     var html = '<img src=”' + imgUrl + '”>';

Content-rewrite
     Automatically rewrite URLs to fetch from cache
     <Optional feature=”content-rewrite”>
        <Param name=”include-urls”>.*</Param>
        <Param name=”exclude-urls”></Param>
        <Param name=”include-tags”>img,script,embed,link,style</Param>
     </Optional>

http://www.example.org/image.png becomes something like:
http://www1.orkut.gmodules.com/gadgets/proxy?url=http://example.org/image.png


                                                                          Google Confidential and Proprietary
Caches are your friends


Use cache effectively
• makeRequests are cached; specify refresh interval
• set HTTP cache-headers effectively

BYO cache
• store user specific data in app data – faster to access
• cache global info in app data
     e.g. high scores
     update content in app data from backend as required




                                                            Google Confidential and Proprietary
Optimize your apps


Minify static content
• re-compress images to smaller sizes
• serve smaller and gzipped JS/CSS files
• concat. JS/CSS files to reduce number of fetches
• include JS/CSS in gadget XML if possible




                                                     Google Confidential and Proprietary
Optimize your apps


Be lean and mean
lighter faster profile pages


• use images, not swfs
• use app data as cache
• use owner/viewer only signed makeRequest
• may choose to show owner-only data on profile pages
• don't load unnecessary files




                                                        Google Confidential and Proprietary
Think ahead


• Expect user requests and prefetch content
• Preload content from your servers
    <ModulePrefs ...>
       ...
       <Preload href=”http://example.com/topScores”>
    </ModulePrefs>
    or
    <Preload href=”http://example.com/myScores” authz=signed views=”profile,canvas”
      signViewer=false>




                                                                Google Confidential and Proprietary
Best practices


• Show a “loading gif” image when expecting the user to wait
• Put Stylesheets at top
• Put Scripts at bottom
• Post-load components
• Use Google's cached version of JS libraries




                                                               Google Confidential and Proprietary
Demo time


Firefox extensions are your friends!
• Firebug
• Live HTTP Headers
• YSlow




                                       Google Confidential and Proprietary
Thank You!
Optimize your app and save the day!




                                      Google Confidential and Proprietary   19

Mais conteúdo relacionado

Mais procurados

Joomla 1.6 Core SEO and Best Practices
Joomla 1.6 Core SEO and Best PracticesJoomla 1.6 Core SEO and Best Practices
Joomla 1.6 Core SEO and Best Practices
FinishJoomla
 

Mais procurados (20)

How to scale SEO work NOBODY wants to do (including your competitors) to rapi...
How to scale SEO work NOBODY wants to do (including your competitors) to rapi...How to scale SEO work NOBODY wants to do (including your competitors) to rapi...
How to scale SEO work NOBODY wants to do (including your competitors) to rapi...
 
Pubcon Vegas 2017 You're Going To Screw Up International SEO - Patrick Stox
Pubcon Vegas 2017 You're Going To Screw Up International SEO - Patrick StoxPubcon Vegas 2017 You're Going To Screw Up International SEO - Patrick Stox
Pubcon Vegas 2017 You're Going To Screw Up International SEO - Patrick Stox
 
Joomla 1.6 Core SEO and Best Practices
Joomla 1.6 Core SEO and Best PracticesJoomla 1.6 Core SEO and Best Practices
Joomla 1.6 Core SEO and Best Practices
 
Joomla 1.7 SEO
Joomla 1.7 SEOJoomla 1.7 SEO
Joomla 1.7 SEO
 
Automating Google Lighthouse
Automating Google LighthouseAutomating Google Lighthouse
Automating Google Lighthouse
 
Split Testing for SEO - 9 Months of Learning
Split Testing for SEO - 9 Months of LearningSplit Testing for SEO - 9 Months of Learning
Split Testing for SEO - 9 Months of Learning
 
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
 
SEO for Large Websites
SEO for Large WebsitesSEO for Large Websites
SEO for Large Websites
 
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersSearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
 
SearchLove London 2016 | Dom Woodman | How to Get Insight From Your Logs
SearchLove London 2016 | Dom Woodman | How to Get Insight From Your LogsSearchLove London 2016 | Dom Woodman | How to Get Insight From Your Logs
SearchLove London 2016 | Dom Woodman | How to Get Insight From Your Logs
 
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick StoxSMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
 
On-Page SEO EXTREME - SEOZone Istanbul 2013
On-Page SEO EXTREME - SEOZone Istanbul 2013On-Page SEO EXTREME - SEOZone Istanbul 2013
On-Page SEO EXTREME - SEOZone Istanbul 2013
 
Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)
Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)
Intro on GWT & Google APIs (Vikram Rangnekar, COO of Socialwok.com)
 
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
 
The New Renaissance of JavaScript
The New Renaissance of JavaScriptThe New Renaissance of JavaScript
The New Renaissance of JavaScript
 
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
 
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
 
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
 
SEO dataLayer 2: Entity Wars
SEO dataLayer 2: Entity WarsSEO dataLayer 2: Entity Wars
SEO dataLayer 2: Entity Wars
 
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
 

Semelhante a Latency Kills by Shishir Birmiwal

7 Habits of Exceptional Performance
7 Habits of Exceptional Performance7 Habits of Exceptional Performance
7 Habits of Exceptional Performance
Nicole Sullivan
 
Administrators admin tips tricks and hacks presented by an ex-googler
Administrators admin tips tricks and hacks presented by an ex-googlerAdministrators admin tips tricks and hacks presented by an ex-googler
Administrators admin tips tricks and hacks presented by an ex-googler
zpurcey
 
Google G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebGoogle G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The Web
QConLondon2008
 
Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1
QConLondon2008
 
What is App Engine? O
What is App Engine? OWhat is App Engine? O
What is App Engine? O
ikailan
 
Google cloud platform
Google cloud platformGoogle cloud platform
Google cloud platform
rajdeep
 

Semelhante a Latency Kills by Shishir Birmiwal (20)

Boot camp 2010_app_engine_101
Boot camp 2010_app_engine_101Boot camp 2010_app_engine_101
Boot camp 2010_app_engine_101
 
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
 
7 Habits of Exceptional Performance
7 Habits of Exceptional Performance7 Habits of Exceptional Performance
7 Habits of Exceptional Performance
 
20 tips for website performance
20 tips for website performance20 tips for website performance
20 tips for website performance
 
Preconnect, prefetch, prerender...
Preconnect, prefetch, prerender...Preconnect, prefetch, prerender...
Preconnect, prefetch, prerender...
 
Administrators admin tips tricks and hacks presented by an ex-googler
Administrators admin tips tricks and hacks presented by an ex-googlerAdministrators admin tips tricks and hacks presented by an ex-googler
Administrators admin tips tricks and hacks presented by an ex-googler
 
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
 
Frontend SPOF
Frontend SPOFFrontend SPOF
Frontend SPOF
 
Google G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebGoogle G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The Web
 
Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1Google G Data Reading And Writing Data On The Web 1
Google G Data Reading And Writing Data On The Web 1
 
Open Source Web Technologies
Open Source Web TechnologiesOpen Source Web Technologies
Open Source Web Technologies
 
Google Cloud for Data Crunchers - Strata Conf 2011
Google Cloud for Data Crunchers - Strata Conf 2011Google Cloud for Data Crunchers - Strata Conf 2011
Google Cloud for Data Crunchers - Strata Conf 2011
 
Perspectives on Cloud COmputing - Google
Perspectives on Cloud COmputing - GooglePerspectives on Cloud COmputing - Google
Perspectives on Cloud COmputing - Google
 
What is App Engine? O
What is App Engine? OWhat is App Engine? O
What is App Engine? O
 
Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07
 
Learn How You Can Accelerate Engineering Workloads with AppStream 2.0 (BAP318...
Learn How You Can Accelerate Engineering Workloads with AppStream 2.0 (BAP318...Learn How You Can Accelerate Engineering Workloads with AppStream 2.0 (BAP318...
Learn How You Can Accelerate Engineering Workloads with AppStream 2.0 (BAP318...
 
Mobile backends with Google Cloud Platform (MBLTDev'14)
Mobile backends with Google Cloud Platform (MBLTDev'14)Mobile backends with Google Cloud Platform (MBLTDev'14)
Mobile backends with Google Cloud Platform (MBLTDev'14)
 
Google cloud platform
Google cloud platformGoogle cloud platform
Google cloud platform
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Latency Kills by Shishir Birmiwal

  • 1. Latency Kills Optimize your apps for latency Shishir Birmiwal Software Engineer Google Confidential and Proprietary 1
  • 2. Is latency that bad? Why all the fuss? Lets take a pop quiz! Google Confidential and Proprietary 2
  • 3. Question# 1 Have you closed a page because it didn't load up in time? Google Confidential and Proprietary
  • 4. Question# 2 Have you re-clicked links? Google Confidential and Proprietary
  • 5. Question# 3 How would you feel if you have to wait 15 seconds between views? Google Confidential and Proprietary
  • 6. Latency Kills • Amazon reported that 100ms of latency costs sales by 1% • An additional 500ms latency saw Google search usage drop by 20% • Users perceive Quality and Ease of Use with lower latency Google Confidential and Proprietary
  • 7. Sources of latency Why do we have latency? Google Confidential and Proprietary 7
  • 8. Sources of latency fetch page gadget xml fetch gadget iframe fetch social data Client fetch backend data Container Application Browser (orkut) backend data Backend content render Google Confidential and Proprietary
  • 9. Kill latency Optimize your app Google Confidential and Proprietary 9
  • 10. Optimize your app • Batch requests • Caches are your friends • Minify static content • Be lean and mean • Think ahead • Best practices Google Confidential and Proprietary
  • 11. Optimize your app Batch Requests Put multiple independent requests together var idspec = opensocial.newIdSpec({ quot;userIdquot; : quot;OWNERquot;, quot;groupIdquot; : quot;FRIENDSquot; }); var fields = [ quot;AppField1quot;, quot;AppField2quot;, quot;AppField3quot; ]; var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), quot;get_ownerquot;); req.add(req.newFetchPeopleRequest(idspec), quot;get_friendsquot;); req.add(req.newFetchPersonAppDataRequest(idSpec, fields), quot;owner_dataquot;); req.send(response); Google Confidential and Proprietary
  • 12. Caches are your friends Proxy Content Use gadgets.io.getProxyUrl(url) to get a proxy URL var imgUrl = gadgets.io.getProxyUrl('http://example.org/image.png'); var html = '<img src=”' + imgUrl + '”>'; Content-rewrite Automatically rewrite URLs to fetch from cache <Optional feature=”content-rewrite”> <Param name=”include-urls”>.*</Param> <Param name=”exclude-urls”></Param> <Param name=”include-tags”>img,script,embed,link,style</Param> </Optional> http://www.example.org/image.png becomes something like: http://www1.orkut.gmodules.com/gadgets/proxy?url=http://example.org/image.png Google Confidential and Proprietary
  • 13. Caches are your friends Use cache effectively • makeRequests are cached; specify refresh interval • set HTTP cache-headers effectively BYO cache • store user specific data in app data – faster to access • cache global info in app data  e.g. high scores  update content in app data from backend as required Google Confidential and Proprietary
  • 14. Optimize your apps Minify static content • re-compress images to smaller sizes • serve smaller and gzipped JS/CSS files • concat. JS/CSS files to reduce number of fetches • include JS/CSS in gadget XML if possible Google Confidential and Proprietary
  • 15. Optimize your apps Be lean and mean lighter faster profile pages • use images, not swfs • use app data as cache • use owner/viewer only signed makeRequest • may choose to show owner-only data on profile pages • don't load unnecessary files Google Confidential and Proprietary
  • 16. Think ahead • Expect user requests and prefetch content • Preload content from your servers <ModulePrefs ...> ... <Preload href=”http://example.com/topScores”> </ModulePrefs> or <Preload href=”http://example.com/myScores” authz=signed views=”profile,canvas” signViewer=false> Google Confidential and Proprietary
  • 17. Best practices • Show a “loading gif” image when expecting the user to wait • Put Stylesheets at top • Put Scripts at bottom • Post-load components • Use Google's cached version of JS libraries Google Confidential and Proprietary
  • 18. Demo time Firefox extensions are your friends! • Firebug • Live HTTP Headers • YSlow Google Confidential and Proprietary
  • 19. Thank You! Optimize your app and save the day! Google Confidential and Proprietary 19