Feeling the need for speed?
-
Ever since the very first commits, a primary focus of NodeBB has been speed. We set out to provide a feature-rich forum without the typical reduction in speed commonly associated with long-running projects. While we didn't know at the outset whether this was possible, there are a few reasons we prioritised speed:
- Technical debt accumulates over time, and we try to be active in reducing it
- Quite selfishly, every second longer it takes for NodeBB to build, affects us ten-fold simply because we build and re-build NodeBB hundreds of times per day.
- A fast forum is a forum that is a joy to use. The worst thing we can show to a user is nothing at all.
Click here to see the full blog post
-
Ah, thanks for the reminder, I meant to mention that in the blog post!
The fact that Persona relies on the Roboto font itself is something @psychobunny will address... in that we won't require a third-party font anymore, in the next theme...
Edit: Done. Our users in China will like that... them working around the Google Fonts issue has been a primary source of complaints from that region!
-
Congratulations! Here is what I see regarding speed:
I've been testing the three main competitors to pick from - being on a trip with 3G (more 2G) coverage -, where m.facebook for e.g. loads in few minutes. The circumstances clearly picked the absolute winner, that's how I ended up here. NodeBB loads almost instantly and after the first page is loaded, the rest feels like a mobile-app; even on extremely slow mobile networks. Later, I found some details that could be addressed, mostly for SEO purposes.
This forum is loading four CSS resources, two of them tiny (almost nothing) when Roboto font was just mentioned by @phit and @julian (drop). These three could be combined and the main, stylesheet CSS, could probably be reduced to under 200KB. I understand, the plugins are loading those tiny css resources but could they be combined into one single stylesheet?
-
The
railscasts.css
stylesheet is used by Markdown, and not core, so we defer loading of it since it's not used unless you're navigating to a topic with syntax highlighting, which is... relatively rare.What I'd want to research is whether we can divide up our mobile-only stylesheets into separate assets.
-
Do you plan to implement second layer caching (to be used in case of traffic surge)?
Suggestion: cookie "loggedin" when the visitor is logged in (and deleting the same cookie when visitor is logged out) · Issue #5418 · NodeBB/NodeBB
This cookie will allow Nginx to differentiate anonymous visitors from logged in visitors in order to serve static cache files. This cache can be made by another application. Here is example code from nginx.conf (WP Super Cache): set $cac...
GitHub (github.com)
-
@vstoykov additional caching is recommended to be handled by third party systems like nginx or varnish.
-
It's ironic that you chose a picture of drifting cars as the banner... a sport not exactly designed for speed
But kudos to the speed improvements!
-
@julian said in Feeling the need for speed?:
@vstoykov additional caching is recommended to be handled by third party systems like nginx or varnish.
I am familiar with that (nginx serving static content).
But I mean caching of the dynamic content for non-logged-in users.
Nginx need a cookie to distinguish between logged-in and not logged-in users (because otherwise it would cache personalized dynamic content).