I'm designing a huge media site. It would need to have about 20 views on the homepage and should attract about 100,000 visitors daily. The site is hosted on a dedicated server. Other than setting up Drupal caching and Boot module, should I be doing anything else to optimize performance? Should I be worried about using Views?
Performance is very subjective and varies widely from site to site, depending on how much custom code you have, how many logins you have, and what your expected usage patterns are.
The first thing you should do is figure out what your expected usage patterns are going to be, put them in a spreadsheet and estimate how many concurrent visitors you'll have on various pages, etc (for example, how many logins will happen at one time, which pages have the highest traffic, are your users authenticated or not).
The second thing you should do is prepare some kind of load test using something like LoadStorm, or even something very basic like JMeter. Set up some scenarios that mimic or exceed your expected traffic patterns. Then run the tests.
When you start load testing you will very quickly see where the bottlenecks in your site are. You can take cachegrind dumps of your site while you are load testing to see where the performance bottlenecks are using the XDebug profiler. You can also watch your database performance (CPU/memory and disk I/O are easy things to keep an eye on).
Once you've done all that, you can look into the following:
- PHP opcode caching to speed up your web server
- A reverse proxy like Varnish to take some of the load off
- Setting up memcached to take load off of the database
- Tuning the database
- Setting up load balancing with multiple instances
Drupal has a decent listing of caching modules/options and how they perform for authenticated and unauthenticated users here.
20 Views on one page sounds excessive. Views isn't great on performance. I have pages with 5 views and they are not fast.
Even with the views results cached loading the views into memory and processing them can still take time. Obviously when the page is cached this issue goes away, but on a busy site the time it takes for a cached page to be built can be an issue.
Caching and tuning can help a little. But you still need to get the page to display in a reasonable time if it is uncached. You may find you can write custom blocks to do the work of the views with a much lighter overhead. It is worth trying it to see what difference it makes.
Using XHprof can help you see what is taking the most time on a page load.
What are effective optimization techniques for Views 3? explains the issues I was having with views