Still Obsessed with Speed (Part 2)
Last month, I explained that I am completely obsessed with making TeamworkPM insanely fast for you.
This month we’ve been working hard behind the scenes to finish what we started with last month’s update.

pushState everywhere!

I explained last month that pushState is something that allows us to serve you pages insanely fast without having to reload everything.
Still Obsessed with Speed (Part 2)
When we left you last month we had pushState rolled out for all project-level pages: Overview, Tasks, Milestones, Risk register, Files, Time and Notebooks.
However, we didn’t have pushState implemented for the top-level pages, so clicking the Dashboard link, for example, did a full reload of the entire page.
The good news is that we have now implemented pushState for all top-level pages! You should find that the Dashboard, All Tasks, Projects, All Milestones, Calendar, Statuses, and the People pages are now loading much faster than before.

Minimal login page

The login page of your TeamworkPM installation now loads faster. We’ve ripped out all the unnecessary stuff so it loads just what it needs to look pretty.
This is important because we want to show you the login instantly, even when you are on a slow connection. We want the entire TeamworkPM experience to be amazing for you.

JavaScript and CSS Pre-loading

Once the login page is displayed, we instruct your browser to start loading CSS and JavaScript libraries in the background. These files will then be in your browser cache so that when you login everything loads faster and seems snappier.

Object-level caching (V2 Caching System)

I’m so excited about this one!
At the moment we used project-level caching on all objects. So if you add a Notebook for example, you’ve just invalidated all Tasks Lists on the project. This is less than ideal.
Internally we’ve started a new project lovingly referred to as the “V2 Caching System” (inventive eh!).
V2 Caching System - Teamwork Projects
The new “V2 Caching System” is smart. Now if you add a Notebook, only the Notebooks page is invalidated. And when you edit a comment attached to a task, the V2 Caching system is smart enough to know that it only needs to invalidate the task and not the task list or the project it resides in.
In addition, we now store the last-modified-date for every object in memory! This allows us to instantly serve you unique “eTags” for every object that hasn’t been updated. Also we can now serve you something called “far-future expires headers” on specific data fetching URLs to prevent data from ever having to reload (this system is even faster than eTags).
Phew. All you have to know really is that over the coming weeks, as we carefully roll out the new caching system, you are going to be blown away by the speed of TeamworkPM.
So you see there are a lot of incredibly nerdy happenings behind the scenes to deliver you the world’s best online project management system. It’s a lot of work, but hey, you’re worth it!