For some reason we want to cache and compress some of our Umbraco pages -- the whole page, with compression. So that goes beyond Umbraco's macros cache, which is perfectly fine in most situations.
Using IIS7 caching and compression is not easy because of the way Umbraco rewrites urls, plus we want to cache and compress a few specific pages, plus... in other words we struggled with the configuration enough to look for other solutions.
There is a nice "OutputCache 4 Umbraco" project which seems stale, works with the old schema only, and has a few drawbacks. It has been released under the MIT license on Our, but without source code. We have, however, reversed (disassembled) the code and are in the way of improving it so it works with 4.7.
So... what shall we do? Assuming the author of the original project can't be reached? Release an "OuputCache 4 Umbraco II" project? Take-over the initial project? Give up the idea entirely and use something else? What?
I'm not aware of any out-of-box solution for this. I think it's quite feasable to implement programmatically what you need (something like setting asp.net Page.Cache properties through a sort of macro etc). Also, probably the simplest resort could be just to use some output proxy (e.g. Squid as a free example) to cache the outgoing traffic of your site.
Ended up using a patched version based upon the disassembled code... in works in our cases on some of our pages but is somewhat unstable, undocumented and difficult to configure. So... I can make that code available to whoever wants it but I'm not sure it's a good idea to use it.
I'm testing now both http://our.umbraco.org/forum/developers/extending-umbraco/13721-Output-Caching-in-45 and masterpages with logic in macros, which are cached. So far outputcache indeed was not only hard to configure, but also feels like a hack. And once it cached a page with an error (could not render macro because macro engine was not found... something related with slow cold start on my hosting, not with code; after cache reset everything was fine).
Having cached macros, on the other hand, is easy, not-a-hack, can be configured from Umbraco backend. Tested with https://www.blitz.io/play (up to 250 hits/sec, most powerful thing I found that is free; if you know better - please share a link):
Non-cached naked uBlogsy can handle up to 70 hits per second until it totally dies. (uCommerce on same hosting can handle 50 hits/sec before dieing).
OutputCached version handles all max 250 hits/sec, response time min-max 520-537ms (hosting in Russia, test from USA)
Macro Cached version handles all max 250 hits/sec, response time min-max 500-510ms, surprisingly even better than masterpage OutputCache. At least it's not worse.
I will probably do some more tests, but looks like just caching everything on the page with built-in macro cache mechanism is pretty much good enough. At least for what I am doing. (to be honest initial 70 hits/sec is good enough for me as well, but I just like to make things faster; It's my personal site, might as well play with high performance :)
In short words: macrocache can get 400 h/s, Umbraco OutputCache is 800 h/s, default asp.net mvc website with [OutputCache] throws 1800 h/s, on same hosting. Any ideas on how to make Umbraco serve thousands of cached pages per second are appreciated. Just for the sake of it — Linux guys are bragging with 10k+ on simple server. I want big numbers too :)
Output Cache for Umbraco
For some reason we want to cache and compress some of our Umbraco pages -- the whole page, with compression. So that goes beyond Umbraco's macros cache, which is perfectly fine in most situations.
Using IIS7 caching and compression is not easy because of the way Umbraco rewrites urls, plus we want to cache and compress a few specific pages, plus... in other words we struggled with the configuration enough to look for other solutions.
There is a nice "OutputCache 4 Umbraco" project which seems stale, works with the old schema only, and has a few drawbacks. It has been released under the MIT license on Our, but without source code. We have, however, reversed (disassembled) the code and are in the way of improving it so it works with 4.7.
So... what shall we do? Assuming the author of the original project can't be reached? Release an "OuputCache 4 Umbraco II" project? Take-over the initial project? Give up the idea entirely and use something else? What?
Thoughts?
I'm not aware of any out-of-box solution for this. I think it's quite feasable to implement programmatically what you need (something like setting asp.net Page.Cache properties through a sort of macro etc). Also, probably the simplest resort could be just to use some output proxy (e.g. Squid as a free example) to cache the outgoing traffic of your site.
What did you end up doing?
Thanks,
Jason
Ended up using a patched version based upon the disassembled code... in works in our cases on some of our pages but is somewhat unstable, undocumented and difficult to configure. So... I can make that code available to whoever wants it but I'm not sure it's a good idea to use it.
I'm testing now both http://our.umbraco.org/forum/developers/extending-umbraco/13721-Output-Caching-in-45 and masterpages with logic in macros, which are cached. So far outputcache indeed was not only hard to configure, but also feels like a hack. And once it cached a page with an error (could not render macro because macro engine was not found... something related with slow cold start on my hosting, not with code; after cache reset everything was fine).
Having cached macros, on the other hand, is easy, not-a-hack, can be configured from Umbraco backend. Tested with https://www.blitz.io/play (up to 250 hits/sec, most powerful thing I found that is free; if you know better - please share a link):
(to be honest initial 70 hits/sec is good enough for me as well, but I just like to make things faster; It's my personal site, might as well play with high performance :)
Made a quick blogpost with further results: http://stefantsov.com/2013/may/boosting-umbraco-with-cache
In short words: macrocache can get 400 h/s, Umbraco OutputCache is 800 h/s, default asp.net mvc website with [OutputCache] throws 1800 h/s, on same hosting.
Any ideas on how to make Umbraco serve thousands of cached pages per second are appreciated. Just for the sake of it — Linux guys are bragging with 10k+ on simple server. I want big numbers too :)
Some updates?
is working on a reply...