10 Ways to Improve WordPress Performance on Windows

(Adopted from JessCoburn.com)

wordpressLast year I attended the San Francisco WordCamp because I wanted to see what the Core WordPress team had to say about WordPress Hosting on Windows.   Sadly, it was my experience there that they’re still not very Windows friendly.  I personally believe it’s one of two reasons:

  1. There’s still this mentality that Microsoft is Evil and out to shut down all things open-source. I wonder if they’ll ever escape from their past.  But this is the classic Open-Source versus Commercial Software debate.  Good luck if you get into one of those debates..
  2. There’s still this ASP/ASP.NET on Windows, PHP/PERL on Linux (okay maybe it’s Ruby today, whatever).

Now, since 2007 Microsoft has been working closely with Zend to make PHP performance on Windows a first class citizen.  Since that time, they’ve done a number of improvements to PHP but still today the PHP developer community is unaware of these changes and that today PHP runs quite good on Windows.

You see, In the past there was always a performance difference between PHP on Linux and PHP on Windows.  I’d love to say PHP on Windows outperforms PHP on Linux but instead I’ll simply say this, In a car race often times it’s not the car that decides who wins the race, it’s the driver.  In application hosting it’s very much the same.  So here’s a few quick tips on what to do in order to get the best possible performance of your WordPress site on Windows:

Tip #1 Use Windows Server 2008 R2

If you’re going to run PHP on Windows, the first thing you’ll want to do is make sure your running this on a Windows Server 2008 R2 server.  This is Microsoft latest build of IIS on it (7.5) and has all the latest improvements on it.  So start there.

Tip #2 Use FastCGI

In a nutshell, when you execute a CGI based application like a PHP based application, each time it’s run it has to fire up a new process. This means everything PHP needs has to be loaded for that page call and then unloaded. On the next page call, this all happens again.  FastCGI, allows CGI applications like (PHP and WordPress) to use the same process so you avoid that load up and unload of the PHP engine every time, it’s already there resident in memory just waiting for the app to be called. http://www.iis.net/download/FastCGI

Tip #3 Use non-thread-safe libraries for PHP

This is a big one.  PHP was always released for windows with thread safe libraries because Windows is a multithreaded architecture. However, when calling a CGI application from within IIS, a multiprocess architecture (similar to Linux) this contributes to slow performance.  By using the non-threadsafe libraries we get around this. http://windows.php.net/

Pages: 1 2

About Jess Coburn

It's Jess's responsibility as CEO and Founder of Applied Innovations to set the direction of Applied Innovations services to ensure that as a company we're consistently meeting the needs of our customers to help drive their success. In his spare time, Jess enjoys many of the things that made him a geek to begin with. That includes sexy new hardware, learning new technology and even a videogame or two! When you can’t find him at the office (which admittedly is rare), you’ll likely find him at the grill or in front of his smoker getting ready for some lip-smacking ribs to enjoy with his wife and two kids.


  1. Ubaid on November 19, 2012 at 1:44 PM

    I am trying to install W3TC on a shared windows hosting environment, and it seems to me that it aint working. Any specifics around it and what to look for in case its not working?

  2. John Henry on December 4, 2014 at 6:06 AM

    You mention that installing W3 total cache on your IIS 7 Server or windows server is totally fine. Are you sure about that? I only knew that w3 total cache is using .htaccess on your server while web.config for windows server or IIS 7.

    • jcoburn on May 23, 2015 at 8:59 PM

      John, the reason it works in our environment is that we have a module for IIS that is able to parse .htaccess files for those versions below IIS7 and for IIS7 and above W3TC works fine. We have hundreds if not thousands of wordpress sites running on it in fact and several of our own sites run on wordpress on IIS7+

  3. Alan on June 26, 2015 at 10:41 AM

    It’s en a few years since this was posted, do all the tips still apply? Anything new since then?

    • Jess Coburn on June 26, 2015 at 11:50 AM

      Alan, absolutely. The only things I would change are as follows:

      1) The version of PHP is obviously newer now and Microsoft helped contributed to those versions so they are better optimized on Windows.
      2) The versions of MySQL today are newer and also Microsoft helped to optimize those.
      3) winCACHE is still recommended for caching.
      4) permalinks just work

      The only thing I might change today would be possibly using redis if load balanced and some optimizations within wordpress which are wordpress specific regardless of the platform you’re hosted on.

      Plain and simple, wordpress runs extremely well on Windows and will run as fast on Windows as it will run on Linux (I’ve mastered it on both). The only issue you run into with WordPress on windows is when developers of plugins take shortcuts that are non-standard, likely performance or security impacting and leverage linux OS specific routines. That’s usually due to their inexperience and with an extremely open platform like wordpress where anyone and their brother can build a plugin and claim to be an expert developers .. it can and does happen.

      Happy WordPressing.

Leave a Comment