Dear Facebook, please fix the internet

Facebook is the most visited website on the internet, followed closely by Google, but do you know what domains come right after Google? More Facebook, or rather more accurately, the domains that serve up data for Facebook “like” buttons.

Check out this list of the most visited websites. Notice how there is a corresponding https version of most of the regular http sites? While that is a great thing when things like user credentials, or email content are being transmitted over the intertubes, a great deal of the information zipping through the cloud can be sent in the clear without the extra processing and delays introduced by SSL/TLS encryption.

So why does Facebook force the entire internet to process its information unsecured once, and then a second time over https? There is a prescribed method for adding a “like” button for a Facebook Fan page to a website. You copy and paste a little bit of code into the page, which asks for some javascript from Facebook, and allows people to like the page in question. Facebook maintains that code, and periodically updates it, but the current version of that code makes two separate requests for some data.

That second request means that you must download the same piece of information twice, and the second time it has to go through secure channels. How much longer does this take?

It’s hard to tell, exactly. Pingdom speed test tells me that it takes about 350mS to retrieve the extra 9.3kB, but GTmetrix tells me it actually takes over 600mS, and Google Page Speed tells me the file actually weighs in at 24.9kB.

While it may seem small to quibble over amounts to, literally, a split-second of your time, think about the fact that this happens every time that stupid “like” button, which is on the majority of websites on the internet, is loaded.

For example, the Gawker media network, composed of Gawker, Lifehacker, Deadspin, etc. is currently serving 17 million page views a day. 17 million. A. Day. They all have a “like” button.

Lets be conservative, and say that it only takes 300mS on average for that data to find itself on a user’s computer. That means, that, on any given day, Facebook costs readers of Gawker Media collectively 150GB of data and upwards of 59 days of extra time.

What does that mean in real-world numbers though?

Using a wild guess as to the power consumption of the average PC, the price of electricity in New York (Gawker’s headquarters) and a healthy application of Loudifier Fuzzy Math (patent pending), the power costs of those extra requests cost Gawker readers a whopping $17 every day!

Okay, so maybe it’s not as big a deal as I originally thought, but it still screws up my Page Speed score, which can affect Google search ranking. It is supremely annoying that I can turn an ancient laptop into a web server for $0, and serve a full page over a consumer-grade connection in under a second, but loading assets from an organization with millions of dollars invested in hardware and infrastructure almost doubles my page load times. Granted, the big F handles a couple more requests per day than I do, and about 20% of this site’s traffic comes from Facebook. I guess I can wait for them to throw me a bone now and then.

Even if it isn’t a huge problem, I still think they should fix it on principle alone. Those wasted CPU cycles could be put to better use, like searching for a cure for Alzheimer’s disease. Using the same Fuzzy Math™ as before, if the computing time that Gawker readers devoted to downloading unnecessary data from Facebook were instead used to simulate protein folding, it could boost the total output of the Folding@Home project by about 10%.

Think about that for a second. By wasting your CPU cycles, Facebook is trying to give you Alzheimer’s. The logic is infallible.

2 thoughts on “Dear Facebook, please fix the internet

Leave a Reply

Your email address will not be published. Required fields are marked *

Connect with Facebook

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>