When looking at ways to increase website performance, every so often I take a step back and consider some of the “crazy” things. One of the most recent was trying to determine whether auto-generating a static site from the WordPress install (for S3 or a very small VPS) would be feasible or have any benefit.
One of the issues you do run into when converting WordPress to a static site has to do with comments – if you want to run a “pure” static site while retaining the ability to accept new comments, you have to use an external service. DISQUS is the most popular, and I decided to give it a try – after all, if that wasn’t going to be an option, chances are I’d have to shelve the whole static-WordPress idea for awhile.
Initial research looked promising. Here are a couple charts from a Pingdom test from 2012 that showed a comparison:
The charts indicated roughly 3 requests and 500ms added to total page load time by using DISQUS compared to the WordPress comment system. But that was back in 2012 – surely almost 2 years later, they must have improved that even further, right?
Turns out, the answer is no. Here is a sample from my results on a page with 45 comments with DISQUS:
I highlighted the appropriate area, but after a few comparison runs, here’s the gist:
DISQUS resulted in an increase of 24 requests, and an increase of roughly 4.5s in page load time. So with DISQUS I had over 2X the requests, and over 3X total page load time. A far cry from what Pingdom found in 2012.
To be fair, DISQUS does load asynchronously, and in additional tests with and without, the time to display the page to the visitor wasn’t negatively affected by it. But with Google constantly tweaking what they do and don’t consider to be important, I’m not sure I’d be comfortable with a total page time ballooning that much. Furthermore, mobile data seems to be the new “dial up”, and I’ve noticed that sites which make a large number of requests tend to choke out more frequently when using mobile data.
Anyway, while DISQUS itself is free (and even has a nifty WordPress plugin), note that it does come at a cost to your total page load time.
Looking at the benefits of DISQUS
Despite the above, there are a number of benefits. I’ll try to list a few in point form:
- If you’ve got a static site, it’s one of the best ways to get comments on there.
- It will sync with your WordPress comments. So you don’t have to worry that you’ll lose your old comments, or that if you change your mind about it later, you’ll lose out on new ones.
- Similar moderation abilities. You can choose to manually approve everything, only approve people that don’t have a previously approved comment, let everything through, etc.
- No caching issues. This is a bit of a biggy. Most WP caching plugins won’t cache pages for someone who has commented on your blog (it’s the only way that the person can see that their comment is in moderation), or for the ones that will, you lose that ability for the commenters. With DISQUS, you can cache as aggressively as you want and your comments will work as expected.
- Spam filtering. I didn’t run into any spam comments in the short time I tested (normally, WordPress would have at least a few dozen waiting for me in that time). Beyond that, even when you’ve got Akismet running on WP, your database fills up with spam. Once removed, your tables tend to stay ballooned in size unless you manually optimize them. You don’t have any of that complexity with DISQUS.
- Moderation via email. I’ve attached a screenshot below to show what it looks like. Sending a quick email reply is definitely easier than logging into a CMS to approve a comment, especially from mobile devices.
- Sharing and voting comments up/down. DISQUS allows people to vote on comments, and can display the “highest” ranked ones at the top if you wish. It also has built-in connectivity to FB, Twitter, etc. That’s not to say that you can’t get that functionality via other plugins, but it’s always nice when it’s all integrated in 1 service.
Looking at the downsides
- Impact on page load time and resources loaded (as mentioned before).
- The ability to manipulate the display is limited compared to WordPress. You can use custom CSS in a number of areas, but for the most part, your DISQUS comments section is going to look identical to everyone else’s. Contrast that to WordPress where different themes can provide different looks, as can plugins, and in a worst-case-scenario you can edit the template file to get exactly what you want.
- More of a hassle for Guest/Anonymous commenters. If you want to allow people to leave a comment without having to plunk in their name and email, it’s a simple setting in the WordPress Discussion Settings. DISQUS requires they enter both of those, and really makes an effort to get people to sign in first, even if you’ve enabled the “Guest” option.
- Depending on the settings you use, some search engines might have difficulty reading the comments. From what I understand, Google reads DISQUS stuff without issue these days, but if you aren’t careful with your settings, others might not.
So yes or no to DISQUS…
If you’ve gone to lengths to optimize your site speed, I’m going to go out on a limb here and say that you probably won’t be pleased with DISQUS, and that you might even die a little on the inside any time you check your site on WebPageTest etc and see the sheer number of DISQUS requests.
If you’re on a static site and really want comments, it’s easily the most popular free comment service, is fairly flexible for what it is, and just might suit your needs.
For everyone else, ask yourself why you’re looking at an external commenting system. I certainly haven’t gone over all the pros/cons of DISQUS, but if nothing above has helped you decide one way or the other, it’s probably something you’ll want to try out for yourself before you make a final decision.
"only [manually] approve people that don’t have a previously approved comment"
This is a a great setting in WP, but I don't see an explicit setting in Disqus for doing this. In other words, I don't see a setting in Disqus that explicitly does this.
The only way I have found for doing this in Disqus is to set manual moderation for all comments, and then whitelist commenters when approving their first comment. That would essentially replicate the WP setting.
Is my understanding correct, though? There is no single setting in Disqus that directly matches the WP setting? thank you..