- Ensure all CSS on top and Java scripts at the bottom
- Avoid expression in CSS
- Externalize java script and CSS
- If caching is used ensure appropriate caching expiry policy is mentioned
- Reduce cookie size
- Cache static page like help pages close to presentation layer.
- Ensure data stored in cache is in the format required to be presentation layer.
- Avoid long transactions
- Cache application data, that are remain same for all users at server level.
- Go for n-layered architecture than n-tier architecture
- Use connection pooling for external connections
- Use Java 7’s NIO for any input-output operations
- If the volume of data is large and they can be segregated into related groups, perform database sharding, which is a method of horizontal scaling.
- Perform vertical scaling of data if the columns can be segregated as frequently used and less frequently used.
- Cache frequently used parameters and query results
- Avoid large data transfer by using GZIP compression
- Minimize HTTP requests, use CSS Sprite and image maps
- Setup Content Delivery Network (CDN) if the application content are geographically distributed
- JVM Heap size
- Heap size determines how often and how long VM spends on GC. If Heap size is large, full GC happens slow but frequency is less while if heap size is small, full GC is fast but frequency is high (To determine the most appropriate heap size use verbose –gc. This will give the exact time the resources are spending on garbage collection. Appropriate measure for the size can be determined by analyzing the reports from verbose –gc.)
Performance monitoring Tools