This week we’ve decided to burn down the backend and start over with a fresh approach. While it’s not a total rewrite (we’re reusing a lot of our code: models, database, forms and so forth), we are refactoring and replacing all of our views.
Why? In a phrase - performance and maintainability.
Building a modern UI requires a lot of markup and has many of moving parts. This results in some rather complex templte logic. Rendering these templates are quite slow. When you run into performance issues the typical advice is start caching fragments, allowing you to often skip rendering all together.
We did this and while it improved performance considerabily. However it had a different cost: maintainbility. Starting to cache bits and pieces here and there to eek out a few ms in performance massive increased overall complexity.
Template Complexity + Cache Complexity = Burn the thing down.
We’re about two weeks in to reworking our interface. From the surface you can’t see any visual differences, but under the hood is all new. And boy is it singing.
Performance is a feature.