Альтернативой является подключение к вашей модели маршрутизации обратного вызова afterSave () и создание кэшированной версии маршрутов, что-то вроде (CakePHP2.0):
class Route extends AppModel {
public function rebuildRouteCache() {
$routes = $this->find('all')
$routeCache = new File(CACHE . 'route_cache.php', true);
$routeCache->write('<?php' . "\n");
foreach($routes as $route) {
$parsed = Router::parse($route['Route']['url']);
$routeCache->write("Router::connect('" . $route['Route']['route'] . "', array('controller'=>'" . $parsed['controller'] . "', 'action'=>'" . $parsed['action'] . "', '" . $parsed['pass'][0] . "', 'plugin'=>'" . $parsed['plugin'] . "'));\n");
}
$routeCache->close();
return true;
}
public function afterSave($created) {
$this->rebuildRouteCache();
return true;
}
}
и добавьте следующее в app / Config / rout.php:
if (file_exists(CACHE . "route_cache.php")) {
require CACHE . 'route_cache.php';
}
Таким образом, файл rout_Cache.php будет обновляться только после сохранения маршрута, и у вас не будет дополнительных затрат на загрузку и чтение таблицы маршрутов при каждом запросе страницы.