How we improved performance of landscapeideas.com
This is a cross post of my blog at gloscon.com http://www.gloscon.com/blogs/barinder/how-we-improved-performance-landsc...
I had worked on Landscapeideas project for quite a long time. Landscapeideas is a community website that provides a platform for different suppliers and contractors to display their products & services. Suppliers and Contractors are provided with a dedicated page where, along with their contact details they can mention company details, services as well as display a photo gallery of their products or services. Product suppliers can provide details about their products while Contractors can provide details on services and Testimonials from their existing clients. Read project case-study .
This entire project was finished in several different phases. In first phase we have to work on landscapeideas's blog and we did custom theme for blog section of site. After doing this client shifted the entire blog to wordpress and after that we given
look and feel of wordpress to drupal blog section.
Now after working on blog section of landscapeideas we worked on various phases of project in which includes article, find-a-contractor,
find-a-supplier and user profile section of site. In all these sections also clients requirement was kept changing all the time.
To meet client's always chaging requirement and demands it leaded us to write various custom modules, use lots contributed modules, migrate lots of discontinued modules and we also hacked core profile module for extending Drupal's core functionality. Each module we installed or written increased code that has to be parsed by PHP. Also, many contributed modules
have not been carefully audited for performance or security concerns.
User profile section is having requirement where we have to make user wise image gallery and also each image should be indexed in search engines to meet this requirement we used Image module and given interface in user profile section to upload and edit all images. Along with user profile section we have to show users images in various other sections of site like find-a-contractor , find-a-supplier sections of site so to achieve all this requirements we overloaded user hook i.e. hook_user() and loaded all the user images in the user's load section.
All this things leaded entire project in a state where it was facing some performance issues.
Now it was time where we have to figure out where site is lacking in performance and while investigating performance issues we figured out few things which hold true for eventually holds true for almost all other drupal projects too.
1.) All Contributed module's are not always carefully audited for performance.
2.) Do not load arbitary data in user load or node load via custom modules.
3.) In your custom modules use hook_load in sensible manner.
4.) Enable CSS/JS aggregation and compression.
5.) Enable page cache.
6.) Optimize images used in CSS.
Beside these our linux admin has also taken various steps to improve performance of servers. He has done fine tuning of database mysql, php and apache web server at clients server.
He has also reduced Php's and apache's memory foot print by removing not required php and apache module. Also Enabled Apaches HTTP Keep Alives configuration option and enabled gzip compression modules for content compression.
* We have used various online utilities like
, yslow firefox extension and drupal's
module to measure page load time and other performance issuse's.
* You can also compare previous performance reports with current ones. Our efforts decreased site load time from ~22 second to ~9 seconds. (Around 250% of gain in page load time).

Post new comment