Optimising WordPress: Dreamhost VPS + W3 Total Cache + Server Caching + CloudFlare

wordpress

#1

Following extensive researching, testing and talking to Dreamhost’s Support team it transpires that their set-up of XCache conflicts with W3 Total Cache (W3TC) for WordPress.

I can also confirm from an IM conversation with a member of their support team that although Memcached is installed and enabled on their VPS environments, they do NOT run it. This is reserved only for Dedicated hosting packages.

TEST PROCESS
[list]
[]Performance testing was measured using a combination of Network performance via Chrome’s inspect element and Apache Benchmark.
[
]Performance testing was measured using a combination of Network performance via Chrome’s inspect element and Apache Benchmark.
[]Chrome Incognito was used, making sure to reload the browser window using Ctrl + F5 to do a full browser cache clear.
[
]phpinfo.php was used to make sure Opcahe was enabled. The VPS environemnt was also restarted after Opcache was enabled.
[]Each test was be performed 3 times, with only the average figure being used in the summary results graph. This is to allow for the usual variation that comes from testing web technologies.
[
]As I go through each step of the test, I am adding each enhancement so the end is the cumulative effects of all the changes.
[/list]

SUMMARY RESULTS GRAPH

DETAILED RESULTS DATA

For the detailed data results see Google spreadsheet https://docs.google.com/spreadsheets/d/1MqtRClOBlnyCIR1bE1qY-SAPeGIu2xP1r_eUeVU1UxM/ or snapshot image.

OPTIMUM SETTING
The optimum settings that I discovered through this lengthy process of communications with Dreamhost, supplemented by detailed testing of W3TC setting variations with Network performance via Chrome’s inspect element and Apache Benchmark is:

[list]
[*] For fully optimal settings from the test please see Dreamhost VPS WordPress Performance Optimisation Report
[/list]


#2

Wow, thank you for sharing your findings! To be clear, you have used a DreamHost VPS and you installed WordPress yourself, correct? Does the VPS use Apache web server or nginx? PHP 7 or 5?


#3

DreamHost VPS environment, and yes I installed WordPress myself. It’s running on Apache web server with PHP 5.6 FastCGI + memory_limit = 128M.

If I can help with explaining any other settings, please do feel free to ask.


#4

Pretty cool! Thanks. We ran some tests too on WordPress, we were curious to see (all things being equal) the difference in terms of performance and resource usage among the various WordPress releases. We ended up discovering that PHP 7 seems to have a huge positive impact on wordpress performance.

http://www.htmlgoodies.com/beyond/php/switch-your-wordpress-site-to-php-7-for-increased-performance.html


#5

Cheers for the heads-up. I’ll add another step to my test results for enabling PHP 7 and see what happens. I’ll let you know the outcome.


#6

WOW! What happened to CloudFlare Free??? Looks like it would be better to turn that off!

I’d like to see the PHP7 results. I’ve read in a number of places that FastCGI is not good for WordPress (that might be related to PHP7), so I’d be interested in testing with Nginx and no FashCGI.

This is encouraging. I’m looking for <=400ms transactions … less than 100 is phenomenal.


#7

Hey Starbuck

Keeping CloudFlare Basic Plan (Free) enabled through Dreamhost, also give the ability to enable CloudFlare Railgun. Combined, these reduce the download time for the webpage with W3TC already optimised by more than 50%. You can see a summary of results in a bar graph format at https://docs.google.com/spreadsheets/d/1MqtRClOBlnyCIR1bE1qY-SAPeGIu2xP1r_eUeVU1UxM/edit#gid=1039880954

I’ve tested PHP7.0 FastCGI vs PHP7.0 CGI on Apache this morning with very little difference in performance. If anything, FastCGI appears to be fractionally faster. You can see full results at https://docs.google.com/spreadsheets/d/1MqtRClOBlnyCIR1bE1qY-SAPeGIu2xP1r_eUeVU1UxM/edit#gid=442806097

I plan to stick with PHP7.0 FastCGI for now. I’m not sure how stable WordPress is on PHP7.1, but sure there’ll be more article on it over the next few months.

If the very helpful and generous team at Dreamhost were to kindly enable an additional VPS environemnt, with Nginx set-up instead of my existing Apache, on my account at no extra cost, I’d be more than happy to do further testing and publish the results for everyone to review.


#8

very useful info here, thanks for sharing.

Do you also use the cloudflare auto minify settings?

oh and how much opcache do you get? is it possible to increase from 64mb?


#9

Would be a shame to see this thread die…


#10

Hi @Alastair_Dixon

Thank you for your positive feedback.

I personally don’t use the CloudFlare Minify, as I prefer to do this using the W3 Total Cache plugin minify settings. I find this gives me greater control of configuration, especially for render blocking code validation and SEO performance.

For the QA environment of my websites I have the Dreamhost default setting of 64MB for Opcache memory. However, the Production environments I have set at 90MB, with 128MB for a memory intensive multi-lingual Woo-commerce site.

If you’re using WordPress I recommend the OPcache Dashboard plugin (https://wordpress.org/plugins/opcache/) which includes a configuration scan of your server and provides recommendations for enhancements.

I hope this helps
Luke


#11

Thank you Luke!

Do you have any tips on good settings to use for the W3 Total Cache minify settings? Its hard to know which articles to or settings to go with as there seem to be so many conflicted articles recommending different settings.

Alastair