View-Centric Performance Optimization for Database-Backed Web Applications Junwen Yang1, Cong Yan2, Chengcheng Wan1, Shan Lu1, Alvin Cheung2 1University of Chicago, junwen, cwan,
[email protected] 2University of Washington, congy,
[email protected] Abstract—Web developers face the stringent task of designing … informative web pages while keeping the page-load time low. <p> … This task has become increasingly challenging as most web <%= @active_projects … > contents are now generated by processing ever-growing amount … </p> of user data stored in back-end databases. It is difficult for developers to understand the cost of generating every web-page … element, not to mention explore and pick the web design with @active_projects = user.projects.active the best trade-off between performance and functionality. In this … paper, we present Panorama, a view-centric and database-aware development environment for web developers. Using database- aware program analysis and novel IDE design, Panorama pro- Fig. 1: Performance understanding challenge vides developers with intuitive information about the cost and the performance-enhancing opportunities behind every HTML file sidebar.html.erb, which produces this sidebar, renders element, as well as suggesting various global code refactorings these projects based on a Ruby variable @active projects that enable developers to easily explore a wide spectrum of embedded in the HTML file; this variable is computed performance and functionality trade-offs. in a controller Ruby file todos controller.rb through a seemingly straightforward assignment @active projects = I. INTRODUCTION user.projects.active. It turns out that this code actually A. Motivation retrieves objects stored in a database, and is translated into High-quality web applications need to provide both good a SQL query by the Rails framework at run time.