The following documentation is extremely useful if you want to keep your site running optimally. *Note, while I am aware of the steps below, I did not write the below article personally though I did do a lot of revision to it.*
1. Repair and Optimize. Your database has been updated a lot of times in the last day, whether you’ve posted or not. There’s a lot of chance for errors there, so you might as well check. If you have SSH Access, use the following SSH command:
mysqlcheck -auto-repair -u`whoami` -A -o -p
Otherwise, the process can be completed through the cPanel.
a) Under the Databases section, click on PHPMyAdmin.
b) Notice the table that appears. This contains all your posts, categories, comments, blogroll links, users, etc.
c) Scroll to the bottom. Click on Check All.
d) To the right of Check All you’ll find a drop down. Choose Repair
e) Repeat the process and choose Optimize from the menu.
(Note that you really only need to do this if you have a lot of overhead in your tables. Check it often.)
2. Deactivate plug-ins you don’t use, don’t absolutely need or don’t want. Remove them entirely from WordPress’s plugins folder (located in wp-content/plugins) after deactivating them inside WordPress itself. Plugins are the cause of many problems.
3. Switch to Fast CGI (Or switch from Fast CGI, sometimes, too)
Login to your cPanel
Click on PHPConfig (under Software/Services).
Select the PHP5 FastCGI button.
Save. (Note: According to WordPress documentation this will speed up WordPress, however, this can sometimes be counterproductive. If needed turn it back to php5. All the documentation says this will dramatically speed things up… This has not always been my experience. Still, try it.)
4. Close any Post Writing Pages when you’re not using them. WordPress will Auto-Save and it uses server resources and builds up CPU usage.
5. Avoid plug-ins or widgets that go out and get RSS feeds. These include the RSS widget and those that look for Twitter tweets.
5.5 .- Remove any old revision posts to clear up database size.(Backing up the database before doing this may be a good idea). See the following for the needed SQL query: http://www.mydigitallife.info/2008/07/22/how-to-delete-existing-wordpress-post-revisions-storedsaved/
6. Turn off the Formatting Options in Settings
In WordPress, under Settings->Writing uncheck both Formatting options. Especially turn off “WordPress should correct invalidly nested XHTML automatically”.
7. Don’t post via e-mail/word. Write your posts in the Write interface and copy/paste it into Word when you’re done or when you take a break. Don’t make WP spend time parsing your Word file.
8. Use Summaries in Feeds. Under Settings->Reading, select use Summaries in Feeds.
9. Use less posts on each page and less Items/Feed. Log into WordPress, go to Settings->Reading, then Reduce the Post/Page and Items/Feed values. Also try the following plugin to help optimize the way your posts handle queries: http://wordpress.org/extend/plugins/efficient-related-posts
10. Under Settings-Discussion, turn off any e-mail notifications you don’t need; especially redundant ones. If you go to your blog often, don’t worry about having it e-mail you for comments. Just turn that off.
11. Install http://wordpress.org/extend/plugins/robots-meta/
In the plugin’s settings noindex/nofollow the things you don’t want/need Google to look at. Turn off date Based Archive, At the least, nofollow/noindex it. Nofollow/noindex (or disable) your author archives(The author archivesmay help boost your search engine ranking slightly. While it is helpful to have this disabled, consider whether you want better performance or possible slightly better search engine rankings)
Redirect “external search results” to your homepage. This prevents people from linking to your search results, which would cause a search every time someone clicks on the link.
12. Use Google Search. This will let Google do the CPU work for your searches, gives you a surprising amount of credibility and brings you money. (adsense.google.com)
13. Reduce image/video/flash/etc sizes. Use Photoshop, Gimp or Fireworks to reduce the image size. Google.com has tutorials.
14. Reuse images. Upload it into a folder inside wp-content (using FTP) called “MyImages” and manually link it. See w3schools.com with coding help.
15. Use a Category Only RSS feed, rather than requiring everyone to use the main RSS Feed. To do that, use a link that looks like: http://MyBlog.com/category/CatagoryName/feed/. This way when someone only wants to hear about “My Dog”, they only hear about the dog and you only get queried for one category instead of all of them. You can put these in as a text widget (be sure to code it manually).
16. Use optimization plugins:
-Use a caching plugin, either the WP Super Cache plug-in, or W3 Total Cache, especially when expecting a large amount of traffic. Find these at: http://wordpress.org/extend/plugins/wp-super-cache/ and http://wordpress.org/extend/plugins/w3-total-cache/. You may need to turn it off while editing posts (or clear the cache from it’s Settings page) as it often doesn’t refresh a page after an edit.
-Use WP Smush.it to compress images. See: http://wordpress.org/extend/plugins/wp-smushit/
(See tentblogger.com/wp-super-cache for help setting up WP Super Cache)
17. Reduce the excess in your CSS, JS and PHP. If you’re doing things that are redundant (e.g. telling a Strong tag to be bold) take it out.
18. If you have the option, use arrays to populate your queries rather than calling them repeatedly to grab different pieces of information.
19. There may be a plugin or a problem left over from a plugin or something along those lines which causes your wp-cron.php to continually update. Read the following on how to disable it: http://wordpress.org/support/topic/124485?replies=13
20. Update. Update. Update. WP updates often have security and feature fixes as well as performance fixes. They also have streamlined code. Use it.
The following article has some discussion in regards to CPU as well: http://wordpress.org/support/topic/164456?replies=61
The following caching tip is taken from
Caching with both mod_expires + mod_headers
# Turn on Expires and set default to 0
# Set up caching on media files for 1 year (forever?)
Header append Cache-Control “public”
# Set up caching on media files for 1 week
Header append Cache-Control “public”
# Set up 2 Hour caching on commonly updated files
Header append Cache-Control “proxy-revalidate”
# Force no caching for dynamic files
Header set Cache-Control “private, no-cache, no-store, proxy-revalidate, no-transform”
Header set Pragma “no-cache”
Caching with mod_headers
# 1 YEAR
Header set Cache-Control “max-age=29030400, public”
# 1 WEEK
Header set Cache-Control “max-age=604800, public”
# 3 HOUR
Header set Cache-Control “max-age=10800”
# NEVER CACHE
Header set Cache-Control “max-age=0, private, no-store, no-cache, must-revalidate”
Caching with mod_expires
# 1 YEAR
# 1 WEEK
# 3 HOUR