Skip to content
Thoughtfarmer intranet blog
Intranet Management

The most important intranet feature? Speed.

Our team has obsessed over caches, calls and queries to bring you an intranet that is up to 35 times faster than its predecessor. How did we do it?

6 minute read
TF Intranet redesign
You might also like…
Intranet use cases Thumbnail
Intranet use cases

A frustrated intranet manager was showing me why he was interested in ThoughtFarmer: his existing intranet was slow. Painfully slow.

“You see, the software has the features we need,” he explained. “But our users just won’t wait for it. It takes too long to load.”

Most people don’t consider speed a feature. But according to VC Fred Wilson, it’s the most important feature. “If your application is slow, people won’t use it.”

We believe this. So we gave our development team a clear, simple mandate for ThoughtFarmer: make ThoughtFarmer insanely fast.

Our team has obsessed over caches, calls and queries to bring you a ThoughtFarmer that is up to 35 times faster than its predecessor. The result?

  • ThoughtFarmer feels almost instant
  • Experience for employees with low-bandwidth connections is completely transformed
  • Extra-large installations (20,000+ users) are  supported

How fast is fast?

In his article Response Times: The 3 Important Limits, Jakob Nielsen provides the following guidance:

  • 0.1 second is about the limit for having the user feel that the system is reacting instantaneously
  • 1.0 second is about the limit for the user’s flow of thought to stay uninterrupted, even though the user will notice the delay.
  • 10 seconds is about the limit for keeping the user’s attention focused on the dialogue. For longer delays, users will want to perform other tasks while waiting for the computer to finish, so they should be given feedback indicating when the computer expects to be done.

In ThoughtFarmer, we’ve moved towards the 0.1 second “instantaneous” barrier. How?

The most powerful performance enhancer: caching

Roughly speaking, there are 3 things you wait for when you load a page of a web app:

  1. You wait for the server to build the page (processing time)
  2. You wait for the page to reach your browser (transmission time)
  3. You wait for your browser to display the page (rendering time)

In order to reduce these times, we optimized thousands of lines of code, rebuilt large sections of ThoughtFarmer, and rewrote hundreds of database queries. But more importantly, we optimized our caching to avoid processing, transmission, and rendering altogether. Let me explain.

A cache is like a kitchen cupboard that stores your frequently-used ingredients. You could travel to the grocery store each time you need milk or sugar, but it’s a lot faster to just reach into your cupboard. Similarly, ThoughtFarmer uses a cache to store frequently-accessed pages. Instead of reprocessing a page each time it’s requested, ThoughtFarmer “checks the cupboard.” If the page is there, it uses the cached version instead of going all the way back to the grocery store, so to speak.

There are many layers of caching in ThoughtFarmer, and there always have been. In ThoughtFarmer, in addition to improvements to existing caches, we added a mechanism to enhance caching. This mechanism, called ETags, provides a way for ThoughtFarmer to find out if you’ve ever loaded a particular ThoughtFarmer page before. If you have, ThoughtFarmer can send a tiny message back to your browser that essentially says, “This page hasn’t changed since last time you requested it.” The fastest way to send a web page, of course, is to not send it at all. This new caching feature makes a dramatic difference in performance, as up to 90% of page requests are for pages that the user has loaded previously. ETags reduces server load, reduces bandwidth consumption, and makes for a great user experience.

ThoughtFarmer also supports a swappable distributed cache, which allows for load balancing across multiple web servers. In concert with the performance improvements described above, these changes allow ThoughtFarmer to easily support tens of thousands of users.

Is speed on your feature list?

Is speed on your list of requirements for your new intranet? I’ve never seen a Request For Proposal that listed “Speed” as a mandatory feature. Speed is one of those things we usually don’t think about until we don’t have it.

I hope to see speed become a topic that is more top-of-mind for intranet buyers. I’m looking forward to receiving a proposal request that lists “Mind-blowing Performance” as a desired feature. And when I do, I’m going to respond with a YES. And a link to this post.

If you like this blog, 

you’ll love our newsletter

From workbooks and whitepapers, to blog content and best practices, our monthly newsletter is full of great content, advice, and expert insight.