SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
SINGLE PAGE APPLICATION
…..A BEST PRACTICE’ CHECKLIST
XYZ – Best Practice Checklist for Single Page Applications
2
Contents
OBJECTIVE...................................................................................................................................................................3
PERFORMANCE TOOLS, RISKS, REMEDIES AND REWARDS..................................................................3
1) USING THE REQUIREJS OPTIMIZER...............................................................................................3
2) CREATING MEMORY LEAKS BY NOT UNBINDING EVENTS ...........................................................3
3) CAUSING MULTIPLE DOM REFLOWS WHEN RENDERING COLLECTIONS .................................4
4) DOING UNNECESSARY XHR REQUESTS ON PAGE LOAD..............................................................4
5) IDENTIFY PROBLEM AREAS USING CHROME TIMELINE ..........................................................5
6) REDUCING THE NUMBER OF VIEWS OR STASH THEM INTO ONE HTML?...............................5
7) FOLLOW BASIC JQUERY PERFORMANCE RULES...........................................................................5
8) BACKBONE BEST PRACTICES IN A PDF FILE.................................................................................6
REFERENCES..............................................................................................................................................................6
XYZ – Best Practice Checklist for Single Page Applications
3
Objective
This document will list out the various performance areas that can be handled for a web app
running a BackboneJS or any other using a MVC (MV*) based framework. The idea is to verify
and then utilize any of the techniques listed to enhance the code for better performance.
Performance tools, risks, remedies and rewards
1) Using the RequireJS Optimizer
https://blog.serverdensity.com/improving-frontend-web-performance-using-requirejs-optimiser/
Backbone handles our models, collections and views, jQuery handles our DOM interactions but
it’s RequireJS that glues it all together at an architectural level.
And even though RequireJS is great at minimizing requests and handling them asynchronously
they soon add up.
The RequireJS Optimiser is a tool that examines Require modules so that they can be
concatenated and minified. It means that developers can manage dependencies in a way that’s
familiar to them without incurring excess requests. The optimiser just becomes an additional
step before deployment.
Eg., In some projects node.js is used to run the requireJS optimizer over 2 separate build files
before deploying the application. One build file defines how to optimize the JavaScript, the
other defines how to optimise the stylesheets.
2) Creating memory leaks by not unbinding events
http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html
Problems arise when we remove a view (usually by calling its .remove() method), but forgetting
to unbind the methods that listen on model changes. In such a case, even though the code may
no longer hold a reference to that view, it is never garbage collected since the model still holds
such a reference via the event handler.
The link above provides an insight with examples how to avoid this memory leak leading to
performance degrade.
 Note: Some more examples of unbinding are provided at -
http://stackoverflow.com/questions/19148259/backbone-js-initialize-listeners-vs-events
---------------------------------------------------------------------------------------------------------------------------------
XYZ – Best Practice Checklist for Single Page Applications
4
3) Causing multiple DOM reflows when rendering collections
http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html
Another common problem that is often visible with large collections is that on update or change,
we render a view for every single model in the collection. While this is sometimes necessary, it
can lead to severe performance issues and adversely affect UI responsiveness, especially on old
computers and mobile devices.
The reason for this is that every .append() we do in the render function causes the DOM to
reflow - meaning that the browser has to recalculate the position and size of every element in
the DOM tree. This is a relatively expensive operation, especially when multiplied by the amount
of models we have in our collection
The EXAMPLES on the link above provide examples on how to trigger only a single page reflow
by utilizing documentFragment.
 Note: The steps and examples are stated at the link provided
---------------------------------------------------------------------------------------------------------------------------------
4) Doing unnecessary XHR requests on page load
http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html
Backbone.js apps generally contain a single HTML page that initializes some basic structure and
loads a few js and css files to get the app up and running. Application data is retrieved using
Collections and Models, using their .fetch() methods.
While this is generally good practice, it has one noticeable disadvantage: when loading the page,
a user has to do at least one HTTP request to fetch our HTML page, and as soon as the app
loads, our .fetch() methods make a couple more HTTP calls to fetch data.
This can lead to noticeable load times on slow networks.
If we serve our HTML page using a server side template, we can simply embed the JSON data
needed to populate our initial models right in the page itself. It's not a pretty solution, but it
may help in many cases.
 Note: The steps and examples are stated at the link provided
---------------------------------------------------------------------------------------------------------------------------------
XYZ – Best Practice Checklist for Single Page Applications
5
5) Identify Problem Areas USING Chrome Timeline
http://blog.pamelafox.org/2013/06/improving-backbone-app-performance.html
The link clearly states the usage of plain Chrome tools to identify the areas of concern and how
they can be mitigated to ensure better performance.
 Note: Some more examples of unbinding are provided at -
http://www.smashingmagazine.com/2012/06/12/javascript-profiling-chrome-developer-tools/
---------------------------------------------------------------------------------------------------------------------------------
6) Reducing the number of Views or Stash them into one HTML?
http://stackoverflow.com/questions/11744634/lots-of-backbone-views-performance-issues
This link thrashes the debate raging as to whether we get a performance perk by reducing the
number of Views or just loading them upfront using caching.
7) Follow basic JQuery Performance rules
 Examples are provided at - http://www.artzstudio.com/2009/04/jquery-performance-rules/
------------------------------------------------------------------------------------------------------------------------------------------
XYZ – Best Practice Checklist for Single Page Applications
6
8) Backbone best practices in a PDF file
 Note: This link was copied from http://wayin.com/wp-content/uploads/2014/06/BackboneJS.pdf
-----------------------------------------------------------------------------------------------------------------------------------------
References
1. http://addyosmani.com/blog/taming-the-unicorn-easing-javascript-memory-profiling-in-devtools/
2. http://addyosmani.github.io/backbone-fundamentals/
3. http://andrewhenderson.me/tutorial/how-to-detect-backbone-memory-leaks/
4. http://blog.binarymist.net/2013/12/28/evaluation-of-angularjs-emberjs-backbonejs-marionettejs/
5. http://blog.pamelafox.org/2013/06/improving-backbone-app-performance.html
6. http://gent.ilcore.com/2011/08/finding-memory-leaks.html
7. http://gregfranko.com/blog/backbone-dot-js-convincing-the-boss-guide/
8. http://javascriptissexy.com/javascript-objects-in-detail/
9. http://javascriptissexy.com/learn-backbone-js-completely/
10. http://lostechies.com/derickbailey/2011/12/23/backbone-js-is-not-an-mvc-framework/
11. http://lostechies.com/derickbailey/2012/03/19/backbone-js-and-javascript-garbage-collection/
12. http://lostechies.com/derickbailey/2012/06/13/why-should-i-use-backbone-marionette-instead-of-
%E2%80%A6/
13. http://metametadata.wordpress.com/2013/06/17/backbone-js-1-0-0-nested-view-memory-leak/
14. http://msdn.microsoft.com/en-us/library/ms752347(v=vs.110).aspx
15. http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html
16. http://stackoverflow.com/questions/11744634/lots-of-backbone-views-performance-issues
17. http://stackoverflow.com/questions/11774738/backbone-why-doesnt-a-collection-reset-trigger-a-
model-event?rq=1
18. http://stackoverflow.com/questions/14479176/how-to-get-javascript-objects-size-and-count-in-
browser-memory
19. http://stackoverflow.com/questions/15126334/backbone-js-memory-management-rising-dom-node-
count
20. http://stackoverflow.com/questions/15970525/how-to-find-js-memory-leaks
21. http://stackoverflow.com/questions/16738686/what-is-the-difference-between-extending-an-
object-using-prototype-or-inline
22. http://stackoverflow.com/questions/16843369/finding-an-infinite-or-very-large-loop-in-javascript-
using-chrome-dev-tools
23. http://stackoverflow.com/questions/19148259/backbone-js-initialize-listeners-vs-events
24. http://stackoverflow.com/questions/19621074/finding-javascript-memory-leaks-with-chrome
25. http://stackoverflow.com/questions/20816810/backbone-dispatch-listen-to-events-between-views
XYZ – Best Practice Checklist for Single Page Applications
7
26. http://stackoverflow.com/questions/422476/setting-methods-through-prototype-object-or-in-
constructor-difference
27. http://stackoverflow.com/questions/5046016/jquery-memory-leak-patterns-and-causes
28. http://stackoverflow.com/questions/9258496/benchmarking-profiling-javascript
29. http://stackoverflow.com/questions/9502929/why-does-my-chrome-profiler-doesnt-show-proper-
retaining-paths-for-my-objects-a/12996648#12996648
30. http://stackoverflow.com/questions/9758346/what-does-backbone-js-do-with-models-that-are-not-
used-anymore
31. http://tech.pro/blog/1402/five-patterns-to-help-you-tame-asynchronous-javascript
32. http://tunein.yap.tv/javascript/2012/06/11/javascript-frameworks-and-data-binding/
33. http://updates.html5rocks.com/2013/02/Profiling-Long-Paint-Times-with-DevTools-Continuous-
Painting-Mode
34. http://weblogs.asp.net/dwahlin/javascript-data-binding-frameworks
35. http://www.artzstudio.com/2009/04/jquery-performance-rules/
36. http://www.codebeerstartups.com/2012/12/12-listening-to-dom-events-in-backbone-js-learning-
backbone-js
37. http://www.codeproject.com/Articles/12231/Memory-Leakage-in-Internet-Explorer-revisited
38. http://www.crockford.com/javascript/private.html
39. http://www.html5rocks.com/en/tutorials/speed/html5/
40. http://www.ibm.com/developerworks/web/library/wa-memleak/
41. http://www.infragistics.com/community/blogs/nanil/archive/2013/04/01/exploring-javascript-mv-
frameworks-part-1-hello-backbonejs.aspx
42. http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
43. http://www.programering.com/a/MzM0cjMwATQ.html
44. http://www.smashingmagazine.com/2012/06/12/javascript-profiling-chrome-developer-tools/
45. http://www.smashingmagazine.com/2012/06/12/javascript-profiling-chrome-developer-tools/
46. http://www.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/
47. http://www.smashingmagazine.com/2013/02/11/introduction-backbone-marionette/
48. http://www.smashingmagazine.com/2013/08/09/backbone-js-tips-patterns/
49. http://www.yourkit.com/docs/java/help/sizes.jsp
50. https://blog.serverdensity.com/improving-frontend-web-performance-using-requirejs-optimiser/
51. https://devblog.supportbee.com//2011/07/29/backbone-js-tips-lessons-from-the-trenches/
52. https://developer.chrome.com/devtools/docs/heap-profiling
53. https://developer.chrome.com/devtools/docs/heap-profiling-summary
54. https://developer.chrome.com/devtools/docs/javascript-memory-profiling#prerequisites-and-
helpful-tips
55. https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/FMhhucrc9R0

Weitere ähnliche Inhalte

Was ist angesagt?

PWA basics for developers
PWA basics for developersPWA basics for developers
PWA basics for developersFilip Rakowski
 
How fast are we going now?
How fast are we going now?How fast are we going now?
How fast are we going now?Steve Souders
 
High Performance Mobile (SF/SV Web Perf)
High Performance Mobile (SF/SV Web Perf)High Performance Mobile (SF/SV Web Perf)
High Performance Mobile (SF/SV Web Perf)Steve Souders
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDee Sadler
 
High Performance HTML5 (SF HTML5 UG)
High Performance HTML5 (SF HTML5 UG)High Performance HTML5 (SF HTML5 UG)
High Performance HTML5 (SF HTML5 UG)Steve Souders
 
Amp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content DeliveryAmp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content DeliveryRaunak Hajela
 
[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅NAVER D2
 
Make mobile web apps rock
Make mobile web apps rockMake mobile web apps rock
Make mobile web apps rockChris Love
 
Enterprise makeover. Be a good web citizen, deliver continuously and change y...
Enterprise makeover. Be a good web citizen, deliver continuously and change y...Enterprise makeover. Be a good web citizen, deliver continuously and change y...
Enterprise makeover. Be a good web citizen, deliver continuously and change y...Mateusz Kwasniewski
 
Web development presentation
Web development presentationWeb development presentation
Web development presentationVaishnavi8950
 
Going Mobile
Going MobileGoing Mobile
Going MobileStephen G
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightPeter Gfader
 
CC 2015 Single Page Applications for the ASPNET Developer
CC 2015   Single Page Applications for the ASPNET DeveloperCC 2015   Single Page Applications for the ASPNET Developer
CC 2015 Single Page Applications for the ASPNET DeveloperAllen Conway
 
@media - Even Faster Web Sites
@media - Even Faster Web Sites@media - Even Faster Web Sites
@media - Even Faster Web SitesSteve Souders
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 

Was ist angesagt? (20)

PWA basics for developers
PWA basics for developersPWA basics for developers
PWA basics for developers
 
3d web
3d web3d web
3d web
 
How fast are we going now?
How fast are we going now?How fast are we going now?
How fast are we going now?
 
High Performance Mobile (SF/SV Web Perf)
High Performance Mobile (SF/SV Web Perf)High Performance Mobile (SF/SV Web Perf)
High Performance Mobile (SF/SV Web Perf)
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
 
High Performance HTML5 (SF HTML5 UG)
High Performance HTML5 (SF HTML5 UG)High Performance HTML5 (SF HTML5 UG)
High Performance HTML5 (SF HTML5 UG)
 
Amp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content DeliveryAmp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content Delivery
 
[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅
 
Make mobile web apps rock
Make mobile web apps rockMake mobile web apps rock
Make mobile web apps rock
 
Enterprise makeover. Be a good web citizen, deliver continuously and change y...
Enterprise makeover. Be a good web citizen, deliver continuously and change y...Enterprise makeover. Be a good web citizen, deliver continuously and change y...
Enterprise makeover. Be a good web citizen, deliver continuously and change y...
 
Web development presentation
Web development presentationWeb development presentation
Web development presentation
 
Web components api + Vuejs
Web components api + VuejsWeb components api + Vuejs
Web components api + Vuejs
 
SxSW 2015
SxSW 2015SxSW 2015
SxSW 2015
 
Going Mobile
Going MobileGoing Mobile
Going Mobile
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and Silverlight
 
Webforms or MVC
Webforms or MVCWebforms or MVC
Webforms or MVC
 
CC 2015 Single Page Applications for the ASPNET Developer
CC 2015   Single Page Applications for the ASPNET DeveloperCC 2015   Single Page Applications for the ASPNET Developer
CC 2015 Single Page Applications for the ASPNET Developer
 
Design+Performance
Design+PerformanceDesign+Performance
Design+Performance
 
@media - Even Faster Web Sites
@media - Even Faster Web Sites@media - Even Faster Web Sites
@media - Even Faster Web Sites
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 

Andere mochten auch

Refactoring to a Single Page Application
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page ApplicationCodemotion
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Jollen Chen
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page ApplicationKMS Technology
 
Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSM R Rony
 
Single page applications
Single page applicationsSingle page applications
Single page applicationsDiego Cardozo
 
How to push a react js application in production and sleep better
How to push a react js application in production and sleep betterHow to push a react js application in production and sleep better
How to push a react js application in production and sleep betterEmanuele Rampichini
 
Axr betabeers 2011-01-31
Axr betabeers 2011-01-31Axr betabeers 2011-01-31
Axr betabeers 2011-01-31Miro Keller
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebChris Canal
 
RxJS 5 in Depth
RxJS 5 in DepthRxJS 5 in Depth
RxJS 5 in DepthC4Media
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and FrameworkChandrasekar G
 
Five stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page applicationFive stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page applicationCharles Knight
 
Islamic Fashion Festival
Islamic Fashion FestivalIslamic Fashion Festival
Islamic Fashion FestivalVili 48
 
Vue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsVue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsTakuya Tejima
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureNicholas Zakas
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0Takuya Tejima
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 

Andere mochten auch (20)

Refactoring to a Single Page Application
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page Application
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
 
Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJS
 
Introduction to Angularjs
Introduction to AngularjsIntroduction to Angularjs
Introduction to Angularjs
 
Single page applications
Single page applicationsSingle page applications
Single page applications
 
How to push a react js application in production and sleep better
How to push a react js application in production and sleep betterHow to push a react js application in production and sleep better
How to push a react js application in production and sleep better
 
Axr betabeers 2011-01-31
Axr betabeers 2011-01-31Axr betabeers 2011-01-31
Axr betabeers 2011-01-31
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
 
RxJS 5 in Depth
RxJS 5 in DepthRxJS 5 in Depth
RxJS 5 in Depth
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and Framework
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Five stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page applicationFive stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page application
 
Love at first Vue
Love at first VueLove at first Vue
Love at first Vue
 
Islamic Fashion Festival
Islamic Fashion FestivalIslamic Fashion Festival
Islamic Fashion Festival
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
 
Vue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsVue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.js
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application Architecture
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 

Ähnlich wie Single Page Application Best practices

Potential Solutions Co Existence
Potential Solutions   Co ExistencePotential Solutions   Co Existence
Potential Solutions Co ExistenceRoman Agaev
 
Architecture Specification - Visual Modeling Tool
Architecture Specification - Visual Modeling ToolArchitecture Specification - Visual Modeling Tool
Architecture Specification - Visual Modeling ToolAdriaan Venter
 
AppSys-SDM Concepts and Practices_v0-02
AppSys-SDM Concepts and Practices_v0-02AppSys-SDM Concepts and Practices_v0-02
AppSys-SDM Concepts and Practices_v0-02Raymond Wong
 
NACCL-Requirements-Specification-Template
NACCL-Requirements-Specification-TemplateNACCL-Requirements-Specification-Template
NACCL-Requirements-Specification-TemplateJason Weber
 
Furniture shop management system project report
Furniture shop management system project reportFurniture shop management system project report
Furniture shop management system project reportMaiwandTechnologix
 
Consistent join queries in cloud data stores
Consistent join queries in cloud data storesConsistent join queries in cloud data stores
Consistent join queries in cloud data storesJoão Gabriel Lima
 
Deploying Customizations across Microsoft dynamics ax 2012 environments
Deploying Customizations across Microsoft dynamics ax 2012 environmentsDeploying Customizations across Microsoft dynamics ax 2012 environments
Deploying Customizations across Microsoft dynamics ax 2012 environmentsTariq Rafique
 
University of Gujrat Lahore sub Campus Documentation FYP
University of Gujrat Lahore sub Campus Documentation FYPUniversity of Gujrat Lahore sub Campus Documentation FYP
University of Gujrat Lahore sub Campus Documentation FYPrashidalyasuog
 
USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6
USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6
USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6Michael Parish
 
3- Siemens Open Library - Example Object Configuration.pdf
3- Siemens Open Library - Example Object Configuration.pdf3- Siemens Open Library - Example Object Configuration.pdf
3- Siemens Open Library - Example Object Configuration.pdfEMERSON EDUARDO RODRIGUES
 
CRM EHP3 landscape guide
CRM EHP3 landscape guide CRM EHP3 landscape guide
CRM EHP3 landscape guide SK Kutty
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshopRohit Kelapure
 
Mx Odbc
Mx OdbcMx Odbc
Mx Odbcfire9
 
Doorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letter
Doorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letterDoorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letter
Doorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letterDarrel Rader
 
Pivotal gem fire_wp_hardest-problems-data-management_053013
Pivotal gem fire_wp_hardest-problems-data-management_053013Pivotal gem fire_wp_hardest-problems-data-management_053013
Pivotal gem fire_wp_hardest-problems-data-management_053013EMC
 

Ähnlich wie Single Page Application Best practices (20)

Software Task Estimation
Software Task EstimationSoftware Task Estimation
Software Task Estimation
 
Achievement Archive
Achievement ArchiveAchievement Archive
Achievement Archive
 
Potential Solutions Co Existence
Potential Solutions   Co ExistencePotential Solutions   Co Existence
Potential Solutions Co Existence
 
Architecture Specification - Visual Modeling Tool
Architecture Specification - Visual Modeling ToolArchitecture Specification - Visual Modeling Tool
Architecture Specification - Visual Modeling Tool
 
AppSys-SDM Concepts and Practices_v0-02
AppSys-SDM Concepts and Practices_v0-02AppSys-SDM Concepts and Practices_v0-02
AppSys-SDM Concepts and Practices_v0-02
 
NACCL-Requirements-Specification-Template
NACCL-Requirements-Specification-TemplateNACCL-Requirements-Specification-Template
NACCL-Requirements-Specification-Template
 
Furniture shop management system project report
Furniture shop management system project reportFurniture shop management system project report
Furniture shop management system project report
 
Consistent join queries in cloud data stores
Consistent join queries in cloud data storesConsistent join queries in cloud data stores
Consistent join queries in cloud data stores
 
Deploying Customizations across Microsoft dynamics ax 2012 environments
Deploying Customizations across Microsoft dynamics ax 2012 environmentsDeploying Customizations across Microsoft dynamics ax 2012 environments
Deploying Customizations across Microsoft dynamics ax 2012 environments
 
University of Gujrat Lahore sub Campus Documentation FYP
University of Gujrat Lahore sub Campus Documentation FYPUniversity of Gujrat Lahore sub Campus Documentation FYP
University of Gujrat Lahore sub Campus Documentation FYP
 
USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6
USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6
USERV Auto Insurance Corticon Rule Model 2015 (Simplified) V6
 
3- Siemens Open Library - Example Object Configuration.pdf
3- Siemens Open Library - Example Object Configuration.pdf3- Siemens Open Library - Example Object Configuration.pdf
3- Siemens Open Library - Example Object Configuration.pdf
 
CRM EHP3 landscape guide
CRM EHP3 landscape guide CRM EHP3 landscape guide
CRM EHP3 landscape guide
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshop
 
Mx Odbc
Mx OdbcMx Odbc
Mx Odbc
 
Doorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letter
Doorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letterDoorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letter
Doorsng po t_core_workbook_sse_imagev3.3.1_v6moda_final_letter
 
Rzepnicki_thesis
Rzepnicki_thesisRzepnicki_thesis
Rzepnicki_thesis
 
Role Based Access Control - Overview
Role Based Access Control - OverviewRole Based Access Control - Overview
Role Based Access Control - Overview
 
Bslsg131en 1
Bslsg131en 1Bslsg131en 1
Bslsg131en 1
 
Pivotal gem fire_wp_hardest-problems-data-management_053013
Pivotal gem fire_wp_hardest-problems-data-management_053013Pivotal gem fire_wp_hardest-problems-data-management_053013
Pivotal gem fire_wp_hardest-problems-data-management_053013
 

Kürzlich hochgeladen

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile EnvironmentVictorSzoltysek
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 

Kürzlich hochgeladen (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 

Single Page Application Best practices

  • 1. SINGLE PAGE APPLICATION …..A BEST PRACTICE’ CHECKLIST
  • 2. XYZ – Best Practice Checklist for Single Page Applications 2 Contents OBJECTIVE...................................................................................................................................................................3 PERFORMANCE TOOLS, RISKS, REMEDIES AND REWARDS..................................................................3 1) USING THE REQUIREJS OPTIMIZER...............................................................................................3 2) CREATING MEMORY LEAKS BY NOT UNBINDING EVENTS ...........................................................3 3) CAUSING MULTIPLE DOM REFLOWS WHEN RENDERING COLLECTIONS .................................4 4) DOING UNNECESSARY XHR REQUESTS ON PAGE LOAD..............................................................4 5) IDENTIFY PROBLEM AREAS USING CHROME TIMELINE ..........................................................5 6) REDUCING THE NUMBER OF VIEWS OR STASH THEM INTO ONE HTML?...............................5 7) FOLLOW BASIC JQUERY PERFORMANCE RULES...........................................................................5 8) BACKBONE BEST PRACTICES IN A PDF FILE.................................................................................6 REFERENCES..............................................................................................................................................................6
  • 3. XYZ – Best Practice Checklist for Single Page Applications 3 Objective This document will list out the various performance areas that can be handled for a web app running a BackboneJS or any other using a MVC (MV*) based framework. The idea is to verify and then utilize any of the techniques listed to enhance the code for better performance. Performance tools, risks, remedies and rewards 1) Using the RequireJS Optimizer https://blog.serverdensity.com/improving-frontend-web-performance-using-requirejs-optimiser/ Backbone handles our models, collections and views, jQuery handles our DOM interactions but it’s RequireJS that glues it all together at an architectural level. And even though RequireJS is great at minimizing requests and handling them asynchronously they soon add up. The RequireJS Optimiser is a tool that examines Require modules so that they can be concatenated and minified. It means that developers can manage dependencies in a way that’s familiar to them without incurring excess requests. The optimiser just becomes an additional step before deployment. Eg., In some projects node.js is used to run the requireJS optimizer over 2 separate build files before deploying the application. One build file defines how to optimize the JavaScript, the other defines how to optimise the stylesheets. 2) Creating memory leaks by not unbinding events http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html Problems arise when we remove a view (usually by calling its .remove() method), but forgetting to unbind the methods that listen on model changes. In such a case, even though the code may no longer hold a reference to that view, it is never garbage collected since the model still holds such a reference via the event handler. The link above provides an insight with examples how to avoid this memory leak leading to performance degrade.  Note: Some more examples of unbinding are provided at - http://stackoverflow.com/questions/19148259/backbone-js-initialize-listeners-vs-events ---------------------------------------------------------------------------------------------------------------------------------
  • 4. XYZ – Best Practice Checklist for Single Page Applications 4 3) Causing multiple DOM reflows when rendering collections http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html Another common problem that is often visible with large collections is that on update or change, we render a view for every single model in the collection. While this is sometimes necessary, it can lead to severe performance issues and adversely affect UI responsiveness, especially on old computers and mobile devices. The reason for this is that every .append() we do in the render function causes the DOM to reflow - meaning that the browser has to recalculate the position and size of every element in the DOM tree. This is a relatively expensive operation, especially when multiplied by the amount of models we have in our collection The EXAMPLES on the link above provide examples on how to trigger only a single page reflow by utilizing documentFragment.  Note: The steps and examples are stated at the link provided --------------------------------------------------------------------------------------------------------------------------------- 4) Doing unnecessary XHR requests on page load http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html Backbone.js apps generally contain a single HTML page that initializes some basic structure and loads a few js and css files to get the app up and running. Application data is retrieved using Collections and Models, using their .fetch() methods. While this is generally good practice, it has one noticeable disadvantage: when loading the page, a user has to do at least one HTTP request to fetch our HTML page, and as soon as the app loads, our .fetch() methods make a couple more HTTP calls to fetch data. This can lead to noticeable load times on slow networks. If we serve our HTML page using a server side template, we can simply embed the JSON data needed to populate our initial models right in the page itself. It's not a pretty solution, but it may help in many cases.  Note: The steps and examples are stated at the link provided ---------------------------------------------------------------------------------------------------------------------------------
  • 5. XYZ – Best Practice Checklist for Single Page Applications 5 5) Identify Problem Areas USING Chrome Timeline http://blog.pamelafox.org/2013/06/improving-backbone-app-performance.html The link clearly states the usage of plain Chrome tools to identify the areas of concern and how they can be mitigated to ensure better performance.  Note: Some more examples of unbinding are provided at - http://www.smashingmagazine.com/2012/06/12/javascript-profiling-chrome-developer-tools/ --------------------------------------------------------------------------------------------------------------------------------- 6) Reducing the number of Views or Stash them into one HTML? http://stackoverflow.com/questions/11744634/lots-of-backbone-views-performance-issues This link thrashes the debate raging as to whether we get a performance perk by reducing the number of Views or just loading them upfront using caching. 7) Follow basic JQuery Performance rules  Examples are provided at - http://www.artzstudio.com/2009/04/jquery-performance-rules/ ------------------------------------------------------------------------------------------------------------------------------------------
  • 6. XYZ – Best Practice Checklist for Single Page Applications 6 8) Backbone best practices in a PDF file  Note: This link was copied from http://wayin.com/wp-content/uploads/2014/06/BackboneJS.pdf ----------------------------------------------------------------------------------------------------------------------------------------- References 1. http://addyosmani.com/blog/taming-the-unicorn-easing-javascript-memory-profiling-in-devtools/ 2. http://addyosmani.github.io/backbone-fundamentals/ 3. http://andrewhenderson.me/tutorial/how-to-detect-backbone-memory-leaks/ 4. http://blog.binarymist.net/2013/12/28/evaluation-of-angularjs-emberjs-backbonejs-marionettejs/ 5. http://blog.pamelafox.org/2013/06/improving-backbone-app-performance.html 6. http://gent.ilcore.com/2011/08/finding-memory-leaks.html 7. http://gregfranko.com/blog/backbone-dot-js-convincing-the-boss-guide/ 8. http://javascriptissexy.com/javascript-objects-in-detail/ 9. http://javascriptissexy.com/learn-backbone-js-completely/ 10. http://lostechies.com/derickbailey/2011/12/23/backbone-js-is-not-an-mvc-framework/ 11. http://lostechies.com/derickbailey/2012/03/19/backbone-js-and-javascript-garbage-collection/ 12. http://lostechies.com/derickbailey/2012/06/13/why-should-i-use-backbone-marionette-instead-of- %E2%80%A6/ 13. http://metametadata.wordpress.com/2013/06/17/backbone-js-1-0-0-nested-view-memory-leak/ 14. http://msdn.microsoft.com/en-us/library/ms752347(v=vs.110).aspx 15. http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html 16. http://stackoverflow.com/questions/11744634/lots-of-backbone-views-performance-issues 17. http://stackoverflow.com/questions/11774738/backbone-why-doesnt-a-collection-reset-trigger-a- model-event?rq=1 18. http://stackoverflow.com/questions/14479176/how-to-get-javascript-objects-size-and-count-in- browser-memory 19. http://stackoverflow.com/questions/15126334/backbone-js-memory-management-rising-dom-node- count 20. http://stackoverflow.com/questions/15970525/how-to-find-js-memory-leaks 21. http://stackoverflow.com/questions/16738686/what-is-the-difference-between-extending-an- object-using-prototype-or-inline 22. http://stackoverflow.com/questions/16843369/finding-an-infinite-or-very-large-loop-in-javascript- using-chrome-dev-tools 23. http://stackoverflow.com/questions/19148259/backbone-js-initialize-listeners-vs-events 24. http://stackoverflow.com/questions/19621074/finding-javascript-memory-leaks-with-chrome 25. http://stackoverflow.com/questions/20816810/backbone-dispatch-listen-to-events-between-views
  • 7. XYZ – Best Practice Checklist for Single Page Applications 7 26. http://stackoverflow.com/questions/422476/setting-methods-through-prototype-object-or-in- constructor-difference 27. http://stackoverflow.com/questions/5046016/jquery-memory-leak-patterns-and-causes 28. http://stackoverflow.com/questions/9258496/benchmarking-profiling-javascript 29. http://stackoverflow.com/questions/9502929/why-does-my-chrome-profiler-doesnt-show-proper- retaining-paths-for-my-objects-a/12996648#12996648 30. http://stackoverflow.com/questions/9758346/what-does-backbone-js-do-with-models-that-are-not- used-anymore 31. http://tech.pro/blog/1402/five-patterns-to-help-you-tame-asynchronous-javascript 32. http://tunein.yap.tv/javascript/2012/06/11/javascript-frameworks-and-data-binding/ 33. http://updates.html5rocks.com/2013/02/Profiling-Long-Paint-Times-with-DevTools-Continuous- Painting-Mode 34. http://weblogs.asp.net/dwahlin/javascript-data-binding-frameworks 35. http://www.artzstudio.com/2009/04/jquery-performance-rules/ 36. http://www.codebeerstartups.com/2012/12/12-listening-to-dom-events-in-backbone-js-learning- backbone-js 37. http://www.codeproject.com/Articles/12231/Memory-Leakage-in-Internet-Explorer-revisited 38. http://www.crockford.com/javascript/private.html 39. http://www.html5rocks.com/en/tutorials/speed/html5/ 40. http://www.ibm.com/developerworks/web/library/wa-memleak/ 41. http://www.infragistics.com/community/blogs/nanil/archive/2013/04/01/exploring-javascript-mv- frameworks-part-1-hello-backbonejs.aspx 42. http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/ 43. http://www.programering.com/a/MzM0cjMwATQ.html 44. http://www.smashingmagazine.com/2012/06/12/javascript-profiling-chrome-developer-tools/ 45. http://www.smashingmagazine.com/2012/06/12/javascript-profiling-chrome-developer-tools/ 46. http://www.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/ 47. http://www.smashingmagazine.com/2013/02/11/introduction-backbone-marionette/ 48. http://www.smashingmagazine.com/2013/08/09/backbone-js-tips-patterns/ 49. http://www.yourkit.com/docs/java/help/sizes.jsp 50. https://blog.serverdensity.com/improving-frontend-web-performance-using-requirejs-optimiser/ 51. https://devblog.supportbee.com//2011/07/29/backbone-js-tips-lessons-from-the-trenches/ 52. https://developer.chrome.com/devtools/docs/heap-profiling 53. https://developer.chrome.com/devtools/docs/heap-profiling-summary 54. https://developer.chrome.com/devtools/docs/javascript-memory-profiling#prerequisites-and- helpful-tips 55. https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/FMhhucrc9R0