9 WordPress plugins you need

Reading Time: 13 Minutes

Extending your WordPress blog with plugins can greatly improve the speed, performance and security of your website. But too many, or wrongly configured plugins slow down your WordPress blog. You need to find a good balance in the plugins you need for WordPress, and the plugins you want. Remove all unnecessary plugins.

WordPress plugins you need to improve WordPress speed, performance and security #

In this post I’ll tell you about some of the WordPress plugins I use (or used) and why. When done right, WordPress plugins will boost your WordPress performance and security. And please don’t forget: WordPress plugin developers spend a lot of time making your blog faster. Support them.

Advertisement:

I host my WordPress sites on IIS, with WinCache as cache back-end. Check with your hosting provider if WinCache is supported (@Vevida it is)

WordPress plugins to extend your blog, for faster and more secure WordPress

  1. Bad Behavior
  2. DB Cache Reloaded Fix
  3. Better WP Security
  4. Debug Objects
  5. MO Cache
  6. Stop Spammer Registrations Plugin
  7. WinCache Object Cache Backend v1.1
  8. WP Super Cache (+ Rewrite fix)
  9. WP Widget Cache

Bad Behavior #

The WordPress plugin Bad Behavior prevents spammers from accessing your blog and delivering their junk. Bad Behaviors home is here on bad-behavior.ioerror.us.

DB Cache Reloaded Fix #

DB Cache Reloaded Fix is a WordPress plugin to cache MySQL database queries, with a given lifetime. MySQL query results are saved to small files within your website for faster access to those results. This saves a lot on MySQL database traffic.

iThemes Security (formerly Better WP Security) #

Better WP Security iThemes Security is one of those plugins I have used (and stopped using, I’m my own firewall ;-). It’s a great plugin to improve security measures; as most WordPress attacks are a result of plugin vulnerabilities, weak passwords, and obsolete software. Better WP Security will hide and protect the places those vulnerabilities live keeping an attacker from learning too much about your site and keeping them away from sensitive areas.

Debug Objects #

Debug Objects is one of those WordPress plugins you use best during development. It gives you a lot of information, like how long database queries take, what slow queries are, load and execution time, theme and template information, $_GET and $_POST information, etc. By using this valuable information you can disable and remove slow plugins, rewrite and optimize code, improve MySQL queries or add extra indices on your WordPress MySQL database tables. All for a faster responding WordPress!

MO Cache #

MO Cache provides simple and fast caching of the translation MO files using the WP Object Cache mechanism. A persistent caching plugin like WinCache is required.

Stop Spammer Registrations Plugin #

Stop Spammer Registrations Plugin prevents spammers (known IP addresses or e-mail addresses) from registering on your blog to deliver their spam. Stop Spammer Registrations Plugin eliminates 99% of spam registrations and comments. The less spam in your database, the smaller (and faster!) your database stays.

WinCache Object Cache Backend v1.1 #

This WordPress plugin is a must-have if your hosting provider supports WinCache. WinCache object Cache Backend v1.1 provides a persistent memory-based backend for the WordPress object cache. The plugin is based on the code written by markjaquith for APC Object Cache Backend (http://wordpress.org/extend/plugins/apc/).

An object cache is a place for WordPress and WordPress extensions to store the results of complex operations. On subsequent loads, this data can be fetched from the cache, which will be must faster than dynamically generating it on every page load.

WP-Super-Cache (+ Rewrite fix) #

WP-Super-Cache is an extensive caching plugin for your website. WP-Super-Cache generates static HTML files of your dynamic WordPress website. Saving a lot on database traffic and resources.

WP-Super-Cache Rewrite fixes for IIS
You can tweak the Rewrite rules to make WP Super Cache perform even better! WP-Super-Cache uses URL rewriting to redirect external requests to your blog posts and pages to a separate directory that contains static HTML and GZIP-ed pages. These static files are automatically created and maintained by the plugin. The WP-Super-Cache plug-in has been written for the Apache web server and will attempt to create and update .htaccess-files within your WordPress installation, but those files have no effect when using IIS as the web server. Unless you use a module like Helicon Ape of course. But then, rewrites can still be improved.

Another pro is WP-Super-Cache supports the use of an object cache back-end like WinCache (still experimental)!

Add to your web.config URL Rewrite rules:

For normal HTML requests and content:

<rule name="WP_Super_Cache_HTTP" stopProcessing="true">
  <match url="^(.*)" ignoreCase="false" />
  <conditions logicalGrouping="MatchAll">
    <add input="{URL}" pattern="^.*[^/]$" ignoreCase="false" negate="true" />
    <add input="{URL}" pattern="^.*//.*$" ignoreCase="false" negate="true" />
    <add input="{REQUEST_METHOD}" pattern="POST" ignoreCase="false" negate="true" />
    <add input="{QUERY_STRING}" pattern=".*=.*" ignoreCase="false" negate="true" />
    <add input="{HTTP_COOKIE}" pattern="^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$" ignoreCase="false" negate="true" />
    <add input="{HTTPS}" pattern="on" ignoreCase="false" negate="true" />
    <add input="{DOCUMENT_ROOT}/wp-content/cache/supercache/{HTTP_HOST}/{R:1}/index.html" matchType="IsFile" ignoreCase="false" />
  </conditions>
  <action type="Rewrite" url="/wp-content/cache/supercache/{HTTP_HOST}/{R:1}/index.html" />
</rule>

For HTTPS requests and content:

<rule name="WP_Super_Cache_HTTPS" stopProcessing="true">
  <match url="^(.*)" ignoreCase="false" />
  <conditions logicalGrouping="MatchAll">
    <add input="{URL}" pattern="^.*[^/]$" ignoreCase="false" negate="true" />
    <add input="{URL}" pattern="^.*//.*$" ignoreCase="false" negate="true" />
    <add input="{REQUEST_METHOD}" pattern="POST" ignoreCase="false" negate="true" />
    <add input="{QUERY_STRING}" pattern=".*=.*" ignoreCase="false" negate="true" />
    <add input="{HTTP_COOKIE}" pattern="^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$" ignoreCase="false" negate="true" />
    <add input="{HTTP_X_WAP_PROFILE}" pattern="^[a-z0-9\&quot;]+" negate="true" />
    <add input="{HTTP_PROFILE}" pattern="^[a-z0-9\&quot;]+" negate="true" />
    <add input="{HTTP_USER_AGENT}" pattern="^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800|w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*" negate="true" />
    <add input="{HTTPS}" pattern="on" ignoreCase="true" negate="false" />
    <add input="{DOCUMENT_ROOT}/wp-content/cache/supercache/{SERVER_NAME}/{R:1}/index-https.html" matchType="IsFile" ignoreCase="false" />
  </conditions>
  <action type="Rewrite" url="/wp-content/cache/supercache/{SERVER_NAME}/{R:1}/index-https.html" />
</rule>

For HTTPS and mobile requests and content:

<rule name="WP_Super_Cache_HTTPS_mobile" stopProcessing="true">
  <match url="^(.*)" ignoreCase="false" />
  <conditions logicalGrouping="MatchAll">
    <add input="{URL}" pattern="^.*[^/]$" ignoreCase="false" negate="true" />
    <add input="{URL}" pattern="^.*//.*$" ignoreCase="false" negate="true" />
    <add input="{REQUEST_METHOD}" pattern="POST" ignoreCase="false" negate="true" />
    <add input="{QUERY_STRING}" pattern=".*=.*" ignoreCase="false" negate="true" />
    <add input="{HTTP_COOKIE}" pattern="^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$" ignoreCase="false" negate="true" />
    <add input="{HTTP_X_WAP_PROFILE}" pattern="^[a-z0-9\&quot;]+" negate="false" />
    <add input="{HTTP_PROFILE}" pattern="^[a-z0-9\&quot;]+" negate="false" />
    <add input="{HTTP_USER_AGENT}" pattern="^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800|w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*" negate="false" />
    <add input="{HTTPS}" pattern="on" ignoreCase="true" negate="true" />
    <add input="{DOCUMENT_ROOT}/wp-content/cache/supercache/{SERVER_NAME}/{R:1}/index-https-mobile.html" matchType="IsFile" ignoreCase="false" />
  </conditions>
  <action type="Rewrite" url="/wp-content/cache/supercache/{SERVER_NAME}/{R:1}/index-https-mobile.html" />
</rule>

You can find more examples in my WordPress web.config file.

WP-Super-Cache tip 1: mobile user-agent check: Enable the WP-Super-Cache plugin WPTouch, then open up the file wp-content\plugins\wp-super-cache\plugins\wptouch.php and comment out line #79: // add_cacheaction( 'disable_mobile_check', 'wp_super_cache_maybe_disable_wptouch' ); This change will make WP-Super-Cache serve a mobile version of the cache.

Minify WP-Super-Cache HTML cache files:minify WP-Super-Cache generated HTML files.

WP Widget Cache

WP Widget Cache caches the output of your WordPress widgets. Usually it will significantly reduce the SQL queries to your database and speed up your site.

Unfortunately WP Widget Cache plugin hasn’t been updated in quite some time (years), and is removed from the Plugin Directory. There are alternatives though: https://wordpress.org/plugins/search.php?q=widget+cache.

Having a widget cache plugin is a plus for WP Super Cache.

WordPress SEO (Bonus tip!) #

WordPress SEO by Yoast Yoast SEO
Yoast SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin by Yoast.


Advertisement:

Hi! Join the discussion, leave a reply!