Wednesday 25 May 2011

Host Images of WordPress Blog in a Subdomain for Better Speed

In some previous articles, I’ve described about how to reduce the page load time of your WordPress blog [ 1. Speed Up Your WordPress Blog By Improving Page Load Time 2. Install Contact Page in WordPress Blog Without Any Plugin 3. Reduce Page Load Time Installing Tweetmeme Retweet Button Manually ] .  Another issue is still yet to discuss that effectively participate in your page performance. By default the images of your site are hosted in the same domain. This slow downs your page speed. Also read:How to Add Extra Widget Section In WordPress Blog. Because, almost all the browsers create maximum two-four connections when downloading a page from the web server. So if your pages contain more than one images then it is wise to host those images in another domain so that the browser can download the images in parallel with your main domain. WordPress does not support hosting images in different domain. But fortunately, it supports and allows you to host images in a subdomain. This article is about how to host your website post images in a subdomain along with the old images that were hosted in the main domain.


Create a Subdomain for your site

In order to get your subdomain you’ve to log-in to your domain control panel.Point to Subdomains and create your subdoamain, provided your domain resides under /public_html/.Note: The facility depends on your hosting provider. So if you are unable to create a subdomain then contact your hosting provider.

Change default image  uploading folder in WordPress

This step involves in setting WordPress to change the default uploading folder for the post images. log-in to your WordPress dashboard. Click on 
“Miscellaneous”
 “Media” under “Settings” from left side of the dashboard.
Fill up the fields as follows: Store uploads in this folder : images Full URL path to files : http://images.yourdomain.com
Click on “Save Changes”. Now whenever you will upload any image to your post, the images will be uploaded in the subdomain http://images.yourdomain.com.

Update the old post images location

You’ve just changed the upload location of your post images. So the images of the new posts will be uploaded in the subdomain. But what about the old post images? Changing the location of all the old images one by one is a stupid job. So at first download all the folders containing the images under /public_html/wp-content/uploads/ from your server.Upload all those folders in the folder /public_html/images/. Now you have to execute a simple SQL query on your database. You can do this from the phpMyAdmin in your domain control panel.Click on phpMyAdmin > select your database from the left side > click on the “SQL” tab.Now put the following query in the box
UPDATE wp_posts SET post_content = REPLACE(post_content,'http://www.yourdomain.com/wp-content/uploads/','http://images.yourdomain.com/')
Click on “GO”. This query will replace “http://www.yourdomain.com/wp-content/uploads/”  with “http://images.yourdomain.com/” in all the image location url. To update the images links in the media library run the following sql command
UPDATE wp_posts SET guid = REPLACE(guid,'http://www.yourdomain.com/wp-content/uploads/','http://images.yourdomain.com/')

Redirect the old images link to to subdomain

You have completed all the task with your site and database. But Google has crawled and indexed your old images. So redirect the old image urls to the new image urls to let Google know that those images are same. To do so ad the following line in your .htaccess file
RedirectMatch 301 ^/wp-content/uploads/(.*)$ http://images.yourdomain.com/$1
Reminder: Backup your .htaccess file before any modification. That’s all to set your subdomain as post-images upload location. Any question is always well come. Put your feedback in the comment section.

No comments:

Post a Comment