May 15, 2014 at 10:52 AM
Edited May 15, 2014 at 10:59 AM
Well, we did plenty of custom hacks / changes for our client:
For starters, we implemented a custom caching system (donut hole caching) where a page can be split up in multiple sections that all are cached (or not) separately.
We can get ~85 RPS now on cached pages (up from 26 from when we first started..) and are planning to do further tweaks here to increase the RPS count.
Also, we rewrote the warmup module: we now have a queue system (for non static content):
For example you can configure it to allow max 100 concurrent requests to be handled, and max 1000 requests to be queued.
People whose request is queued that refresh (and therefor close the queued request' connection) their request will no longer be executed (so pressing F5 @ heavy load doesnt trigger additional executions)
In addition, we have a time limit: if (for example) you are in said queue for 30 seconds you get a 'server overloaded' message.
We also wrote our own nagivation menu system that has advanced permissions and is cached 'where possible'.
Also, we did custom hacks/patches to the Orchard core so that when you request a cached page, it no longer does ANY query at all.
In short we added a 'CurrentCachedSite' to the WorkContext and used it where needed.
We also switched to the ReadUncommited transaction isolation level 'by default' (but still use ReadCommitted where needed) to speed things up more.
We are still (well since recently) on 1.7.3 where we decided to not use the new media library system.
Our content items are mostly built up around Fields, almost no parts were used to speed things up further (+ add the advantage of the fact that you can have fields multiple times, parts you can only have once)
Hope this helps a bit to get an idea. You can find me regularly @
if you have more questions
Our usage of Orchard is pretty advanced (a lot of custom changes + we worked long on it, I think around 2 years now [not constantly ofc]): the changes that we did (or deemed required) might not be an issue for your scenario!
Our biggest problem was (back then, havent checked since 1.7.3 upgrade) is that the import / export simply blew up because we have 90k+ users (that also count as content items) and Orchard simply doesn't handle that properly (or didn't properly when we wanted
to use it)