Authcache offers page caching for logged-in authenticated users. This allows Drupal to load pages in 1-2 milliseconds and take the load off the the database & processor. Please help test this module (the site I was creating this for got axed, but I continued development on this module). Feedback & patches are welcome. This module can be used for anonymous users (it's faster than Drupal core since the database won't be hit), supports the statistics module, and can cache blocks of user-customized content.
Many thanks to Steve Rude for his work on the Cache Router module, which Authcache uses as its caching system.
This is how it works:

This technique has been around a while, so I take no credit in the idea, only the implementation. ;) I'm somewhat obsessed with optimization & page load times, which is why I developed this module. There's just something awesome about a fast, responsive website.
Demo site:
http://authcache.httpremix.com

Comments
Very Interesting
This looks very interesting. I'm wondering what if any thoughts you might have around what should/could happen if the JSON pingback doesn't happen very fast (e.g. db is non-responsive for some reason) and form tokens aren't updated. It's probably outside the scope of just this module, but maybe automated JS to disable forms until they can be enlivened with working data?
http://www.chapterthree.com | http://www.outlandishjosh.com
https://pantheon.io | http://www.chapterthree.com | https://www.outlandishjosh.com
Form Tokens
Yes, I've taken this into account. If the form submits and the token isn't set, another Ajax request is sent and will automatically submit the form once it receives the token.
http://httpremix.com
Sweet dude!
Hot.
I'm actually going on vacation for two weeks, but will pick up this thread when I get back. Congratz on this and thanks for releasing it to the community!
http://www.chapterthree.com | http://www.outlandishjosh.com
https://pantheon.io | http://www.chapterthree.com | https://www.outlandishjosh.com
Interesting approach - the
Interesting approach - the ideal solution would be to somehow allow Drupal to identify dynamic content, render and cache all the non-dynamic bits, calculate the dynamic ones at load, merge everything together and output to browser. Some pages have literally one string of dynamic content, and as of now we still recalculate everything for logged in users.
Good step forward! But Ajax has as you noted, many pitfalls and may not be reliable enough in this specific context for production sites.
very interesting! super
very interesting! super bummed that you had to fork cache router as there are going to be some major developments in that module, not to mention i am rewriting the caching system for D7 (cross your fingers that this will get in).
is there any way to integrate with cache router without forking? anything i can help with?
i want to spend a bit more time checking this out before i really can give a review / feedback.
Slantview Media http://www.slantviewmedia.com/ | Blog http://www.slantview.com/
Hmm, the major change is the
Hmm, the major change is the page_cache_fastpath() function... so a fork could probably be avoided if that code is integrated into Cache Router. I also changed the db engine to allow fast caching. There's also a slight change in cache_clear_all() to avoid clearing all pages on cronjobs (not sure if this is too aggressive, though). Otherwise I think everything else is mostly same. It would be nice to integrate somehow, then I wouldn't have to keep track of updating the fork files. =)
http://httpremix.com
Quick question...
Will it be possible to run both the Authcache and Cache Router modules at the same time?
-- Michael
You can have both modules
You can have both modules enabled at the same time, but the "cache_inc" key in settings.php should be set to the authcache.inc path. Authcache uses the same code as Cache Router, so when Authcache is enabled, you have the same functionality as Cache Router.
http://httpremix.com
Well after multiple tests
Well after multiple tests and discovery, you cannot run both CacheRouter and AuthCache modules at the same time for memcache clustering. In fact, CacheRouter will take presidence over the AuthCache in the settings.php file.
Since memcached doesn't have a way for 'verbose logging', I ran an instance of alternative-memcached 'Tugela Cache' (http://meta.wikimedia.org/wiki/Tugela_Cache) in very verbose mode and was able to capture in real-time how all set and deletion of keys was going through the CacheRouter and totally bypassing AuthCache.
-- M
let's figure out a way to
let's figure out a way to pull cache router out of this module, i really like the idea, but i really don't support the idea of forking it. i've had a hard time keeping up with the changes in the memcache module and implementing them. for example i still don't support cache stampede protection that memcache has. not to mention the huge duplication of code.
you can't run both modules at the same time actually, cause the cache router module itself does very little. all the logic is in cacherouter.inc.
Slantview Media http://www.slantviewmedia.com/ | Blog http://www.slantview.com/