1. Use caching wisely: Use caching without hesitation. But cache different data for different amounts of time, based on how huge it is, how long it remains unaltered and how frequently it is accessed. Choose the appropriate caching technology or mechanism.

2. Minimize server round trips: Minimize the number of hits to the server during an operation. For instance, while loading data or executing a set of operations.

3. Use memory sparsely: While using memory-critical system resources, stick to ‘Acquire Late Release Early’ principle. For example, opening web/DB connections and creating IO streams. Also determine the data required for the current page and current request and load only as much.

4. Use lazy/ asynchronous processing whenever possible: Always reduce the amount of workload for a single request by opting to delegate part of the work to a background process, by opting to make an external system’s processing asynchronous or by doing the processing later.

5. Use remote invocations selectively: Remote invocations are very expensive and have great impact on performance. Hence use them as selectively as possible.

6. Profile your code frequently: Use performance testing tools like SQL profilers and code profilers to benchmark your product’s performance. Also deploy some code analysis tool(s) in parallel, and make sure your code passes through all performance parameters in the project-specific checklist you have arrived at.

7. Audit performance: Monitor and track (log) performance-related data at chosen parts of the code consistently to monitor performance.

8. Benchmark your product for performance: Test your application periodically with large quantity of data and use appropriate tools to benchmark your application for performance.