-
Notifications
You must be signed in to change notification settings - Fork 0
Performance TODO List
-
Remove remaining sync dojo.xhr usage (metadata, resource, other)
-
Build review and commenting into layer, remove any old build workarounds for review and commenting as a separate project
-
remove eval/sync xhr using in iframe in Context.js
-
Review network panel for individual network hits
-
Simplify document construction, avoid layouts
- adding images to palette seems to be causing many layouts. Can this be constructed in a document fragment?
-
Use JSON.parse and compliant JSON for *.json files (see dojo.contentHandlers for dojo.xhr)
-
Optimize user pages using dynamic AMD aggregator
- impacts loading both the designer and preview modes, as well as the final product
- quick solution would be to preload most/all of dijit (e.g. dijit-all) Does not really address the problem, nor does this account for other toolkits
- optimize CSS requests (packaged, custom themes) inlining @import references, either per level or have a server task crawl the tree and create the batched response. Perhaps shrink whitespace, comments also
- shrink and concatenate Javascript files using Dojo build tool or similar. May have significant performance problems of its own and not be suitable for davinci runtime.
-
Review images
- convert palette category icons to data: images?
- add anything to sprites?
-
Batch server requests to reduce latency
- combine/inline package/widget JSON files on server
- a REST protocol to return multiple JSON objects, CSS files, etc.
- CSS for modeling (different than CSS requests from HTML, below) - could also combine, but in a structure which preserves filename info, or parse the model on the server and return as JSON
- Individual widget metadata
- Tree requests, per level?
-
Share Dojo/Dijit for themeeditor and design mode
-
More JS profiling
- hotspots
- repaints/layouts, many likely triggered by Dijit
- create new (empty) document @ ~6 seconds
-
Memory profiling
- In Firebug
- In Chrome dev tools
-
Deferred loading
- load tabs on demand, or prefetch - only load visible content on load (partially implemented)
- Defer loading of views (Explorer, Review)
- Separate ThemeEditor code in Context, lazy-load theme editor
-
Further build goals:
- need strategy for build for ve and/or preview modes
- build BBT "plugins" as layers
- build across osgi plugins (or eliminate osgi plugins), i.e. davinci.review plugin
- Use Google Closure compiler to shrink JS files. Seems to have better results than ShrinkSafe.
- Or are there switches to ShrinkSafe that we can employ to achieve similar results to Closure?
-
consider removing osgi /jetty from server. would tomcat scale better? bypass servlets for simple resource fetching? what technology does orion use on their server?
-
Batch DOM updates using DocumentFragment
- Instead of doing many successive DOM creations/insertions into the page Document, do them into a DocumentFragment, then add the DocumentFragment to the page Document. This provides much better DOM performance. (Dijit generally does this for us where "custom widgets" are used)
-
Performance Tools