I’ve been researching and learning about speed optimizations for Wordpress for the last couple of months. Bluehost has always been slow for me in Vietnam, and while I didn’t think I could change that in the end (I am not so sure it is their fault really), why not try to do some enhancements?
In the end, after spending many hours reading and trying out different things, here are my suggestions. I won’t go into too much detail on everything, if you’re hard core, you’ll be able to read up by yourself, but let’s assume you just want to do some quick and easy things to noticeably help your blog site out.
That’s what this guide is for.
First, look into installing Firebug and YSlow (the screenshot above is YSlow running for my site) for Firefix: Firebug and YSlow (you need Firebug in order to run YSlow) are Firefox extensions from Yahoo that helps you understand how your site is slow. Oftentimes, it’s not just purely the max download size of your site that causes slowdown, it’s how the files are processed by your browser- the best comparison I can think of, though not entirely accurate, is traffic on a freeway. Let’s say you have 100 cars. If you have 5 lanes, 20 cars per lane may not be so bad. But if you put all 100 cars into just one lane, there will be major slowdown. Using tools like YSlow can help you see if you’re really using all 5 lanes for your web site. When running YSlow, remember to choose “Small Site or Blog” under “Rulesets" in the upper middle area of the interface. YSlow (Why Slow?) will give you a numeric grade based on how well optimized your site is (I got 100%!). Again, it doesn’t guarantee that your site is fast, it’s more about finding big issues that you may be able to fix and YSlow has great documentation to explain what each of their scores mean.
Of course, how to actually improve the scores is the hard part, so let’s identify some ways that can help with the common problems identified by YSlow.
- PHP Speedy. PHP sites often use PHP Speedy in order to help quicken things, and guy who wrote it has done a Wordpress-specific version as well. I’ve compared it to other plugins or sets of plugins that do similar things, but PHP Speedy seems to to the best choice. Be wary of running multiple plugins that do the same thing, as that could could slower speeds. PHP Speedy by default loads JavaScript files at the top of your CSS, but you can hack it so it will load at the bottom (your site will feel like it’s loading faster). You can also let Speedy gzip and minimy (basically makes your files smaller) your site for smaller downloading size, though you should let your server handle that if possible, like in your .htacess file….
- Your .htaccess is another big way to not only make your site more secure but also improve its speed. If you’re not sure what this is, basically look for this file in your root directory. Here are some optimizations in mine, which include Zlib compression, .htaccess file protection from outside access, some basic DOS-attack prevention, cache optimization, and ETags settings. If you get any errors, you may want to check with your Hosting Service to make sure they support all the settings below; it took me a long time to figure out which compression settings would work on Bluehost. Just paste this in your root .htaccess file:
# php_flag zlib.output_compression On
# protect the htaccess file
<files .htaccess>
order allow,deny
deny from all
</files># disable the server signature
ServerSignature Off# limit file uploads to 10mb
LimitRequestBody 10240000#ETAGS/CACHE
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule># disable directory browsing
Options All -Indexes - FastCGI: Ask your hosting service about it.
- cSprites: cSprites uses a technique called CSS Sprites to eliminate multiple loading of images. Let’s say you have 10 different images on your post. Instead of making the browser download 10 images (browser has to ask the server 10 times, back and forth), you can combine all those images into 1 larger image. The user can’t tell the difference in terms of the images, but on the system, it’s usually faster overall this way. One problem I noticed, however, is that it may not work with caching plugins well…, which I discuss next.
- Caching Plugins: Most people probably know about WP Super Cache. WP Super Cache is a super popular caching plugin, but I’ve been using DB Cache and Hyper Cache. Some people, including me, have tried using both together, and like the results. I have been using both for a couple of months and I like what I see so far.
Like I said though, cSprites isn’t quite 100% compatible with caching plugins yet, but the author has said he’s working on a version that will be.
So there you go. If you don’t know how to install plugins or have a friend who can help, then I suggest not tampering with anything as if something goes wrong, you won’t know how to get the site back up.
As for I Spit Hot Fire, with these new changes you should hopefully feel that the site is fairly quick (especially if you’re from the US), but if you don’t let me know!
With the caching settings enabled in my .htaccess file, you should also notice that your browser downloads virtually nothing each time you come back to the site (see screenshot), really making things quick.
By the way, here are some sites that go into more detail about if your site code is validated (follows standards, is clean and causes no problems) and how fast your site really is:
- Techhive.Net / Xinu – Check your site’s PageRank, backlinks, feed subscribers, xhtml/css validation and more.
- Web Page Analyzer
- Is My Blog Working? – let you know the general loading speed of your site, if your site supports gzip and caching, etc.
- Web Page Performance Test
- Cache Testing – make sure your site lets your browser cache properly- critical for fast loading speeds on the second and following visits
Next: I’ll tackle some common plugins I like a lot, including security tools.
Tags: Blog, bluehost, optimization, plugins, speed, wordpress





There’s also the WP Minify plugin that I just found: http://omninoggin.com/wordpress-plugins/wp-minify-wordpress-plugin/
A lot of the functions are already done by PHP Speedy, but might be worth trying if you don’t like PHP Speedy. For me, I actually run out of memory when I try to minify my ,js Javascript files with PHP Speedy.
i use a database optimization plugin. I’ll look it up and send it your way. PHP SPEEDY LOOKS cool. definitely need to check that out.
I notice that Minify for PHP Speedy can slow initial connection to the server.
Michael – I ran out of memory with php Speedy too… All you have to do is modify one settings in your php.ini file on your server (ask your host about it if you don’t know)… but once I frixed the mempry problem, php speedy didn’t detect any scripts, so that didn’t work…
WP Minify works and detects all the scripts, but it is buggy and the site looks awkward… but at least it’s working! And the site is MUCH faster with just WP Minify… I haven’t installed DB Cache or Hyper Cache yet!
So to me WP Minify seems better than PHP Speedy as it is up to date.
Thanks Joe, I’ll switch out PHP Speedy and see how it goes. One thing that Speedy has that Minify does not is the ability to apply long expiration headers, something that’s really useful for browser caching on multiple site visits.
Yeah. Also, WP Minify doesn’t compress the HTML! I’d probably rather use Speedy, but it seems like a whole big project to get it working with the latest WP.
I’m actually not so convinced that Minify is that much of a benefit, at least compared to GZip.
Hey, also, I found these other two plugins:
“Script Compressor” and “Head Cleaner”
They both compress JS and CSS but both are have the option built in to put JS at the bottom of the page and some other options… I’m using Head Cleaner for now… The site is definitely faster with the JS compressed and at the bottom.
The only thing is both plugins still can’t compress my CSS correctly. It looks horrible!
Also, with these two plugins the cSprite plugin doesn’t work. They conflict with each other. cSprite and Head Cleaner seem to use an exact same php file and make the exact same calls, and cause an error. cSprite and Script Compressor cause a totally different error… Oh well… So right now I just have Head Cleaner, DB Cache, and Hyper Cache. The site’s a lot better, but not as much as I know it could be!
I really hope PHP Speedy can be fixed for wp 2.7.1 so i can have compressed html as well! It seems to be the best bet (if it works with your version!).
What version are you using by the way, michael?
What is your problem again Joe? The only thing that doesn’t work with my PHP Speedy (.5.2) is minify Javascript (memory issue). It works fine for the CSS and HTML stuff. Btw, a new version of CSprites is out. Not sure if it fixed the compatibility issue with caching yet or if it will help with Head Cleaner. May give it a try over the weekend. Regarding WP, I am using the newest version.
My issue is that PHP Speedy (.5.2) doesn’t detect any scripts at all! I’m using WP 2.7.1.
I’mma try cSprites again!
Hmmm, I tried the new cSprites, but it doesn’t seem like it does anything at all. At least it’s not causing an error screen like before though, hehe.
Check it out if you want: http://www.bettafootwear.com/CrownYourFeet
ope, nevermind. There errors returned. It took a while. Maybe the cache from DB and Hyper had to expire first.
I noticed that Adrian at CSprites released his new version to address the error you’re talking about. I guess you’re saying the update hasn’t fixed the issue? I just tried leaving a comment on your site, but the Post Comment button doesn’t work. It’s like there is no actual button there.
One thing you can try with PHP Speedy is turning off all your plugins except for PHP Speedy and seeing if it detects scripts. Maybe another plugin is creating the conflict.
oops, hehe i fixed the post comment button.. But yeah the cSprites error is still popping up just like before with Script Compressor plugin active. Also, most of my images are NextGEN gallery images… i wonder if it works with those?
That’lll be a project disabling all plugins to test php speedy! I have lots of plugins
haha I might have to try it though.
Well, through Admin you can turn off all of them with one click so you can test quickly. If it does work and you have a plugin conflict, figuring out which plugin is the problem will be the time consuming part.
I’m going to turn off Minify for html and css again for PHP Speedy. When I monitor my initial loading (when you actually to start to see the website, I think Minify causes slowdown. I use ismyblogworking.com to test access speeds from a third party: http://ismyblogworking.com/www.ispithotfire.com
When I use Minify, it will report 3 second loading times and say my site seems slow. My feeling is PHP Speedy does the Minify on demand, and doesn’t cache the Minify results, causing slowdown on the load
Hmmm, interesting. Both Script Compressor and Head Cleaner create cache files of the compressed/combined JS and CSS, although HTML isn’t compressed.
The MySQL server is having issues on my host (fatcow.com) so my site is on pause
When it gets working I’ll keep you posted on how PHP Speedy works for me (if it even does) after disabling some plugins.
For some reason, your last comment was marked as spam by Akismet. I’d use Script Compressor, but I still want to use PHP Speedy for its Data URI (not even sure what that is) and header expiration stuff (that’s for caching). I don’t think it’s possible for Speedy not to group CSS files together, which would create a problem with Compressor. I think you can have it not group JS files though.
Tough decision.
Update: I’ve recently stopped using DB Cache because it hasn’t been updated and creates an issue when trying to save tags and categories in posts. Now I just Hyper Cache, Widget Cache, and PHP Speedy. CSprites never got updated, so it doesn’t work right with caching tools yet either.
Michael, just an FYI, there’s a DB Cache Reloaded that’s been forked & updated to work with WP 2.8+ Here’s the link:
http://wordpress.org/extend/plugins/db-cache-reloaded/
Hi Jeff, thanks for the comment and your work. I’ll check it out this weekend!
Hi Jeff, I get the following error, but I haven’t quite figured out how to fix it:
DB Cache Reloaded Error: wpdb class is redefined, plugin cannot work!
Previous definition is at /home/ispithot/public_html/Wordpress/wp-includes/wp-db.php:53.
DB Cache Reloaded Error: DB Module (wpdb class) is not loaded. Please open the Options Page, disable caching (remember to save options) and enable it again. If this will not help, please check FAQ how to do manual upgrade.
I guess this could be talking about it, I’m using WP Tuner as well: http://wordpress.org/support/topic/335864?replies=3
Likely spot-on with that Michael; never heard of the WP Tuner plugin though, I’m gonna have to check it out!