Config flag to disable router caching if needed

This commit is contained in:
Evan Prodromou 2010-12-06 17:19:41 -05:00
parent a33d1d6090
commit 49757c79ee
3 changed files with 26 additions and 8 deletions

12
README
View File

@ -1540,6 +1540,18 @@ external: external links in notices. One of three values: 'sometimes',
nofollowed on profile, notice, and favorites page. Default is
'sometimes'.
router
------
We use a router class for mapping URLs to code. This section controls
how that router works.
cache: whether to cache the router in memcache (or another caching
mechanism). Defaults to true, but may be set to false for
developers (who might be actively adding pages, so won't want the
router cached) or others who see strange behavior. You're unlikely
to need this unless you're a developer.
Plugins
=======

View File

@ -324,4 +324,6 @@ $default =
array('ssl_cafile' => false, // To enable SSL cert validation, point to a CA bundle (eg '/usr/lib/ssl/certs/ca-certificates.crt')
'curl' => false, // Use CURL backend for HTTP fetches if available. (If not, PHP's socket streams will be used.)
),
'router' =>
array('cache' => true), // whether to cache the router object. Defaults to true, turn off for devel
);

View File

@ -127,15 +127,19 @@ class Router
function __construct()
{
if (empty($this->m)) {
$k = self::cacheKey();
$c = Cache::instance();
$m = $c->get($k);
if (!empty($m)) {
$this->m = $m;
} else {
if (!common_config('router', 'cache')) {
$this->m = $this->initialize();
$c->set($k, $this->m);
}
} else {
$k = self::cacheKey();
$c = Cache::instance();
$m = $c->get($k);
if (!empty($m)) {
$this->m = $m;
} else {
$this->m = $this->initialize();
$c->set($k, $this->m);
}
}
}
}