= Optimisation = There are many things which can be done to optimise the performance, so of them will be minor and some of them may require larger changes. The two goals are: * Faster * Less Bandwidth (smaller pages and/or more caching) == 1) Develop Automated Performance Metrics == Before Sahana Eden can be effectively optimised, we need a set of performance metrics to optimise to. Metrics should: * Test as wide as wide a variety of the code as possible. * Be able to be automatically tested (''See:'' DeveloperGuidelinesTesting). * Cover different usage scenarios * Low bandwidth * High number of users The Automated Performance Metrics, will also allow us to better share performance statistics of Sahana Eden. Can test out the performance of different !JavaScript options to achieve a task using: * http://jsperf.com == 2) Make Enhancements to Sahana Eden == Once the metrics have been developed enhancements can be made to improve these. These enhancement * Using Profiler Tools to identify parts of the code which require more computation (http://eden.sahanafoundation.org/wiki/DeveloperGuidelinesOptimisation#Profiling). * Avoid excess DB calls, Use web2py's {{{cache}}} instead * Move as much JS to static files as possible * Investigate the possibility of loading large page components using AJAX (although this should only be for subsequent pages as there is a per-request overhead) * S3XML's gis_encode(): Remove the Public URL to keep filesize small when loading off same server (GeoJSON &layer=xx) * KML Stylesheet: Don't repeat the IconStyle for every record if they have the same marker (tuids?) * Download/execute scripts asynchronously: * http://headjs.com/ * http://labjs.com * http://requirejs.org ''See Also:'' * DeveloperGuidelinesOptimisation