Browsed by
Tag: Search

Photo Credit:
Improved Self-Hosted WordPress Performance

Improved Self-Hosted WordPress Performance

My self-hosted WordPress website was slow. Google Analytics Site Speed showed page load times fluctuating from 8 to over 15 seconds.  I know that anything over 2 seconds is bad and results in lower traffic and search engine referrals.  I have put up with this slowness for years, but now I need to address this problem.  I spent time with Google searching and reading about WordPress settings, plugins, content delivery networks (CDNs), and web host configurations that are designed to improve site performance. There are links to many of the resources I used throughout this post. Furthermore, if you are hosted with an optimized WordPress hosting service, then these steps may not be necessary because of the hosting provider’s optimization.  Please check with your hosting company.

I am not an expert, and I addressed my website’s performance problem through trial and error.  I tried many combinations of plugins and setting before locking in on the below mix.  I am NOT being compensated for this post in any way.  It is my experience, and some of this information may very well be wrong.  If anyone has suggestions or recommendations to improve the performance of a self-hosted WordPress site, please post a comment.  Thank you for the help! –Mike

Initial Page Speed Assessment for

  • Google PageSpeed Insights Score: 64/100 (D)
  • Google Analytics Site Speed: 8-15 Seconds
  • Pingdom results using the New York Test Server
    • Grade: 65/100 (D)
    • Requests: 49
    • Load time: 13.6 seconds
    • Size: 1.6Mb
    • Slower than 88% of websites
  • These are very dismal results, and it is no wonder why my site traffic has fallen badly over the last couple of years.

Final Optimization Results as of 03/23/2016 – a significant improvement in the site performance!

  • Grade: 83/100 (B)
  • Requests: 19
  • Load time: 0.914 seconds
  • Size: 460.6 kB
  • Slower than 9% of websites

What I Used
Note: the free plugin versions were used, but I believe in supporting the developers. Thanks and free press for the developers are nice gestures, but it does not pay their bills. All software takes time and serious skill to develop so buy their services & software if it is valuable to you.

Before We Begin, Backup…Backup…Backup

Anytime major changes are made to your blog, it is important to back up the site before starting.  If things go wrong, you can always restore the site. If you do not have a backup process already in place, it is simple to add.  Login into your site admin page, go to plugins, select “Add New” and search “Backup.”  Many of these backup plugins support multiple storage options, including writing the data to Google Drive, an FTP account, Amazon S3, and Azure. Please take to look them over a few seem to be shady, so taking some time with Google is in order.  I have purchased backup service through Automattic’s VaultPress, and it is working well.  Please, Please, and Please, take the time to back up your site—including the database—before continuing on with this post.

Creating a Blog’s Baseline Scores

Go to Pingdom and test your website as a baseline.  Click on “Settings” and pick a server in the “Test from” section.  Keep using the “Test from” server throughout the process.  If you are doing this over multiple days, you will want to test at roughly the same time to make sure you are comparing apples-to-apples. Once complete, visit Google’s PageSpeed Insights and complete a test. Be sure to document your results to see what changes are improving your scores. My initial scores are listed below.

  • PageSpeed Desktop Score: 64/100 (D)
  • Pingdom Grade: 65/100 (D)
    • Requests: 49
    • Load time: 13.6 seconds
    • Size: 1.6Mb
    • Slower than 88% of websites

Time for a clean-up

Review your installed plugins and deactivate and remove any plugins that you do not need or want.  Look at each plugin and think about what it will do for the performance of the site and does it help deliver your content.

Example: Page View Plugins to show most popular posts.
These write an entry to your database each time a page is loaded.  This will slow your website down, and what value does it bring to your readers?
Alternative: Use Google Analytics or the Site Stats component of Jetpack to understand your best posts.

Example: Related Posts Plugins
These are great and may help retain visitors longer.  However, many will process the data on your webserver and hit your database hard.  This slows down your website.
Alternative: Use a plugin that shifts the burden off of your site.  The Related Posts feature in Jetpack is one such plugin.

Do not have another cache or optimization plugin installed as it could conflict with the plugins that I listed in the What I Used section. Review the features included with Jetpack and disable anything you are not using.  If possible, see if you can disable any feature or option of the other plugins that are not being used.  Basically, if you are not using it, don’t enable it.  Since we are in clean-up mode, take a critical look at the widgets that are being used.  Do they serve the purpose in helping your visitors consume or find additional content?  Do they add value to the visitor’s experience or aid in establishing the blog’s authenticity?

Once complete, clear the cache from your web browser and visit your site.  Does it look right?  If so, complete another set of tests and see how your results compare.  If the site looks off, go back and enable one thing at a time until you find the feature you were looking to restore.

Are you considering changing your theme?  Now would be a great time to do it.  Once your new theme is active and the widgets set, run the tests once again.  The site is clean, and you have a solid performance baseline metrics for your WordPress site.

House Keeping (not speed related…but many people forget to do it)

Update WordPress, themes, and plugins to their latest versions.  Please do this frequently for improved security, stability, and performance. Next, we want to make sure that you have an updated SEO plugin.  The website title, description, keywords, Google Analytics tracking code, webmaster verification code, and any other headers that need to be added.  A good plugin should allow you to set your robots.txt file.  Jetpack will take care of creating a sitemap that should be submitted to Google and other search engines through their respective webmaster tools.

Plugin Overview

  1. Jetpack by Automattic
    This is a powerhouse plugin and has a ton of features to offer including an image CDN. Use Photon if your web hosting provider does not have a relationship with a CDN that comes with your service.  Media Temple uses CloudFlare as their CDN partner and a basic subscription is included with my hosting service.  This is becoming more popular, and you should check your host’s control panel.
  2. WP Smush
    Images can represent a huge slowdown for websites. WP Smush optimizes your images as you add them to your media center in WordPress.  Additionally, it can optimize your images already in your blog in batches.  This can take time, and you must stay on the page to do it.  Do not skip this step!
  3. W3 Total Cache
    This is a great caching plugin. It will create static HTML files for your website.  These files are much faster to deliver than the PHP files that WordPress uses.  Additionally, this plugin will update these static files as you make new posts or when they need to be refreshed because of age.  The plugin will require some configuration, but it is well worth it.  There was some concern regarding the continued active development of this plugin.  WordPress Tavern did a nice write-up on its status.

Setup Details

Jetpack by Automattic
Install and activate the plugin.  This is straight forward.  I disabled the following features: beautiful math, carousel, comments, Gravatar, JSON, Likes, Markdown, Monitor, Photon, Post by Email, Single Sign On, Site Verification, Galleries, VideoPress, and Data backup.  I use Disqus as my comment system, so I use the Disqus Conditional Load plugin. If you do not have a CDN that comes with your web hosting services, then you should enable Photon.

WP Smush by WPMU Dev
Install and activate the plugin. From the plugin page under WP Smush, click on “Settings.” Place a check mark in “Smush images on upload” and then “Save Changes.” Next, under “Smush in Bulk,” press “Bulk Smush Now” until all of your prior images have been optimized. This will take a while based on how many images are in the media library.  The free version limits it to 50 images per press.  I pressed “Bulk Smush Now” a lot… Once complete, I averaged a 20% reduction across my entire media library.

W3 Total Cache by Frederick Townes
Before installing this plugin, open another browser window in Incognito or InPrivate mode. Then go to your blog’s home page in that private window. Once you are at your home page in the private browsing window, Right Click on the page and view the page source code. In Google Chrome, the option is “View page source.” In Microsoft Edge, this option is “View Source.”  You will need this code window later so do not close it.

NOTE: If you use the mobile theme that is part of Jetpack or WP Touch, then your desktop users may see mobile versions of pages.  Some additional steps are required to address this issue.  I am working on these steps and will do a separate post once it is complete. One quick option is to disable the Jetpack mobile theme support and see how your theme looks on your mobile phone.  Many newer themes work great.  Another workaround is to make a few changes. These are temporary workarounds, and I know it.

Now, move back to your main browser window that is logged into the WordPress admin page.  Go to plugins and install/activate W3 Total Cache. I did not have to reset any security permissions as they were all set correctly way by default. There is an excellent setup guide completed by Ahmad Awais, and I do not believe in reinventing the wheel.  The Guide is broken into a few parts and takes you through all the key configuration steps.

Our option configurations were very close.  We diverged in the advanced minify area.  The options I used are listed below.  You should test both methods (Ahmad Awais first) to see what works best for your site.  This includes speed and functionality.

Minify Details Page (Performance | Minify)


  • Line break removal: Enable


  • Minify for all three options and select Embed type: “Non-blocking using async”

This is where it starts getting more complex. I went back to the other browser window where I have the code for the web page displayed. I then searched through that code to find all the Java files. There are three sections where these files will typically live. You will need to look closely, but find file names ending in “.js” after the <head> and before </head>, after the <body> tag but close to it, and before the closing </body> tag. In looking through the View Source and using the search function, it is pretty easy to find all the files that end with “.js”. Please be aware that some of these files will have parameters after the .js that begin with a “?”. Please see the below screenshot for what some of my entries look like. You need to be sure to group the Java files in the correct section and in the same order as what was listed in the View Source. It is not hard to look through the page source and find these files. You may want to view the source on some of the other pages and posts to see if the Java files are used consistently throughout the site. If not, you can specify the Java files by template page type. In my particular case, all “.JS” files were consistent across the different page and post types, so I was able to apply them to “All Templates”.

W3_Total_Cache_JS_SectionClick image for a larger view


I specified the .css files in the same way as I did for the Java files above.

W3_Total_Cache_CSS_SectionClick image for a larger view

Even though my screenshots only include a few files listed, I had 16 Java files and 8 CSS files.

Wrapping It All up and Publishing

I then “Saved all settings” and went to the Dashboard underneath Performance. If you have not done so already, deploy your configuration. If you have already saved this configuration, you will simply need to empty all caches. At this point, I opened up another browser in incognito mode, emptied its temporary files, and thoroughly tested the site. I was not able to detect any visual or functional anomalies for my site. I tested search, navigation, links, comment forms, and the feedback form. I logged in and out of the admin portal several times, and everything worked as it should.

Retesting to Assess the Results

I performed new PageSpeed Insights and Pingdom test.  The results were phenomenal. The improvement was dramatic, and I was shocked at how fast I could navigate the site after the cache was seeded.

  • Grade: 83/100 (B)
  • Requests: 19
  • Load time: 0.914 seconds
  • Size: 460.6 kB
  • Slower than 9% of websites

Furthermore, take a look at my server load below. I use a shared hosting platform so GPUs represent an allocation of CPU resources. Can you tell when I deployed the cache?


After this was completed, I enabled the content delivery network, CloudFlare, that comes with my hosting provider. My performance decreased slightly but that CDN offers several advantages, including greater website security. For now, I am leaving the CDN enabled and seeing how it performs over time. Currently, it is reducing server bandwidth by 20%. I will spend some time tweaking its configuration to figure out how to get the best performance out of it.

I hope this information helps, and please let me know if you have other tips or alternative configuration settings that produce better results.

Photo Credit:
The Internet Never Forgets

The Internet Never Forgets

An elephant never forgets? Forget that. Try getting something pulled off-line when you really need it to go away. As you will quickly find out, it is nearly impossible to remove information completely off of the Internet once it has been posted. The Internet is such a distributed network with caching and proxy servers all over the world that once information is posted online it is part of that information collective and extremely difficult to sanitize (make it disappear permanently.) And when I say posted, I mean anything that is written to an Internet-based server is fair game, and you should be ready for that information to never go away.

I am not a conspiracy theorist that believes the black helicopters are scanning my brain waves or that the government is using my flat screen television to subconsciously program me. I do believe that the vast majority companies that provide us Internet-based services are honest and ran with integrity and concern for their customers’ privacy. However, I am not naïve enough to accept the fact that information does not get exposed accidentally or there are unforeseen circumstances where information may be breached intentionally or unintentionally.

So what is the big deal? Well, think about all the information that you store online; this goes both professionally and personally. Think about it really. If you are like most Internet savvy people, you have a tremendous amount of personal and professional information stored online. This can come from cloud storage such as Dropbox or to services such as LinkedIn, Facebook, or Twitter. Many of us do our taxes; host confidential and proprietary meetings; engage in personal and professional email communications that are sensitive; and even conduct medical activities online. How much of this would you like to see in Google’s or Yahoo’s search results? Would it matter that the information was accidentally exposed?

Read More Read More

Employers to Job Seekers: We Snoop, Deal With It

Employers to Job Seekers: We Snoop, Deal With It

Reality is reality and there is no way around it.  Since the social-networking boom, research into the online lives of potential candidates happens with ever increasing frequency.  The trend of researching candidates’ social-networking profiles will become standard practice for nearly every company. I know this is already the case for many companies. Is it wrong? I do not think so. Ultimately, people have to be responsible for their online actions as much as they are responsible for their real-world actions.

A while ago, I wrote a couple of posts about how social-networking could get you a pink slip, and how it could hurt or help you in your next job.  Several months later, and completely unrelated to my posts, a blogger, Meredith Levinson, wrote a piece basically telling employers to stop snooping into the online lives of job seekers.  Her article made some very good points and is very well written. However, it is not very realistic.

Employee behavior directly reflects on the image of the company. This is a valid consideration that every company, and candidate, should take into account. It is perfectly valid for potential employers to exclude candidates that routinely display behavior and conduct online that is dangerous, inappropriate, or would be considered unwise by most people. Basically, if a candidate cannot exercise reasonable judgment online, then how can they be trusted to exercise reasonable judgment in the workplace?

Can a potential employer abuse access to social my working sites? Of course, a hiring manager that disagrees with political or social commentary by a candidate can, of course, make it impossible for the candidate to be hired. As a candidate, this is the dangerous side of opening your personal life and opinions to the World Wide Web.  Remember, only your resume is speaking for you during the first initial cut by HR.

As a candidate be aware, it is really as simple as that. Your potential employer, if not your current employer, will research your online identity. Be sure you know, and are comfortable, with what they are going to find. If you do not like what you find, then change it. This is the beauty of the information age.

Photo Credit: Google
Could it be the consumer that actually wins the office productivity software war?

Could it be the consumer that actually wins the office productivity software war?

Google has a new ad campaign that is directly taking on Microsoft’s baby, Office. Google has been doing very well head-to-head against Microsoft’s Internet service offerings; however, office productivity is one area where they may just be out of their league.  This is a serious revenue source for Microsoft, and they will play for keeps.

Microsoft has recognized the threat of Google Apps and has started to move in its lumbering pace towards a confrontation. Look at the deployment options consumers will have in the next release of Microsoft Office. Office 2010 will have a web-based version similar to Google Apps, mobile device support, and a full-blown application for local installation. Microsoft has even announced that it would have an ad-supported consumer version of Office Web Applications, the web based Office application.

I have been using Microsoft’s Office Live Workspace for several months and it is a great service. It is web-based collaborative storage service that integrates very well with Microsoft Office. This foundation is a glimpse of the future Office Web Applications.  Additionally, the Microsoft Web Applications will not have some of the document conversion issues that are encountered when working with Microsoft Office files in Google Apps.

Google Apps is a quality application suite, and I have written positively about my experience with the suite.  I still use Google Apps to host my personal e-mail domain. Even though the applications are well designed and feature rich, they are not Microsoft Office or even Open Office. I am reading and hearing of more deployments of Google Apps in education and at municipal government level.  This has the potential to save these institutions substantial amounts of money, but I am not sure how they are addressing the inherent security issues that come with Internet based data storage.

For me, I have to question Google’s focus. Google is moving forward on many different fronts and against large established competitors. Below is a list of a few Google products and the associated competitors. The more I think about it, it does seem like Google has a target in mind.




Android Mobile Device OS Microsoft, Apple, Nokia, RIM, etc.
Chrome Web browser Microsoft, Mozilla, Opera
Chrome OS Operating System Microsoft, Apple, Open Source
Apps Office productivity Microsoft, IBM, Open Source, Sun, etc.
Gmail Email Microsoft, Yahoo, IBM, etc.
Search Web, Enterprise, Desktop Microsoft, Yahoo, etc.

Microsoft and Google know the value of business consumers, and they will fight long and hard for their dollars. Office productivity is a core technology suite with large budgets in most corporations. In Microsoft’s latest 10-K filing, they report the Microsoft Business Division annual revenue at $18,894,000,000.  Microsoft Office systems generate over 90% of Microsoft Business Division revenue; this is serious business indeed.

No one will argue that Microsoft does not have the strongest brand and market penetration with Office. From a typical business professional point of view, and given that the access methods were similar, which would you choose Microsoft Office or Google Apps? I am betting that it would be Microsoft Office. To the majority of users, it is a known application interface and the file format is globally supported in the business community. Especially when you take into account that under the new Office 2010 business software licensing agreements that employees working from their non-primary computer, like from home, will have access to the non-ad supported web version at no additional cost. This is reminiscent of the good old days when the 80/20 software deployment rule was standard.

Both programs are going to get even better and the product offerings will only improve under stiffer competition. Microsoft should come out on top as long as they do not rest on their laurels. Ultimately, the consumer will have access to better applications no matter where they are located and at lower cost.  Will this application access freedom be an IT headache? You bet it will, and I can see the arguments brewing now.  In fact, I have already participated in a few.