*Update: Whoaaa, this blog post is really old! Check out some more recent posts here.
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 6.7 Bamboo: make ThoughtFarmer insanely fast. For the last 4 months, 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 now 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 6.7, 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:
- You wait for the server to build the page (processing time)
- You wait for the page to reach your browser (transmission time)
- 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 version 6.7 Bamboo, in addition to improvements to existing caches, we added an all-new mechanism to enhance caching. This new 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 6.7 Bamboo 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.
Looking for a clear and simple path to a new intranet? Download our free Intranet Buyers Workbook to learn 10 key steps in evaluating intranet solutions.
Have questions? Get in touch! We're always happy to hear from you.