- Perform load testing & optimization beforehand include slow-log analyses;
- Percona Toolkit for MySQL can help to analyze slow logs;
- Check Drupal SEO Tools report;
- Match recommendations of the following:
- Security Review Module;
- Site Audit module;
- Acquia Insight;
- YSlow;
- Performance and Scalability Checklist module;
- Match the requirements of Acquia Insight;
- Analyze Coder Review results;
- Perform load testing using tools with cleared database cache, memcache and image styles when caches are disabled;
- Make sure you have a failover scenario and a quick backup;
- Configure Cron jobs;
- Disable all development modules;
- Add console.log stub;
- Configure caches properly: Varnish, Memcache;
- Check if CDNs are configured correctly for live environment;
- Make sure AJAX requests are cached;
- Enable bandwidth optimization;
- Compress cached pages;
- Aggregate and compress JS/CSS files;
- Use Advanced CSS/JS Aggregation module instead of core aggregation;
- Test simultaneous an consequent anonymous access scenarios and behavior when every cache is enabled;
- Replace database logging functionality with other solutions, e.g. syslog;
- Disable any errors output on frontend;
- Enable fast_404 in settings.php file or use Fast 404 module;
- Make sure file permissions for file directories and code directory are set correctly;
- Make sure that input formats are correctly configured;
- On /admin/config/system/site-information make sure the email address and name are correct;
- Ensure website permissions are set appropriately and minimally;
- Get rid of CHANGELOG.txt etc (from Git etc). Do NOT remove robots.txt;
- If using SSL, change your local /etc/hosts to point the site to its live domain and ensure SSL redirection is working correctly;
- Remove test content, such as "lorum ipsum" text, dummy users, or content generated by the Devel module;
- Check the maximum file upload sizes and maximum execution time;
- If you don't use core Search module, make sure it's disabled;
- If you use any replacements for standard Cron, make sure it's disabled;
- Warm caches before launch:
- Use Cache Warmer module;
- Use HTTPRL Spider module;
- If possible, perform launch component-by-component and one-by-one;
- Make sure your admin account has a strong password and it's changed before launch;
- Enable caching for Views output, Panels panes output and blocks. Useful modules are the following:
- If you maintain a very large number of files on your website, it can have a substantial negative effect on performance and stability, especially if they are all contained in the same directory. If your site requires a large number of files, maintain them in multiple directories;
- Using standard Views pager might cause performance issues because of additional COUNT query. Use Views Litepager instead.
- Some conditions prevent the use of an in-memory temporary table, in which case the server uses an on-disk table instead:
- Presence of a BLOB or TEXT column in the table;
- Presence of any string column in a GROUP BY or DISTINCT clause larger than 512 bytes;
- Presence of any string column with a maximum length larger than 512 (bytes for binary strings, characters for nonbinary strings) in the SELECTlist, if UNION or UNION ALL is used.