Url路由检测增加缓存

This commit is contained in:
thinkphp
2016-01-10 16:32:46 +08:00
parent 28e0bc0fc8
commit 0c05a264f4
2 changed files with 22 additions and 28 deletions

View File

@@ -143,55 +143,45 @@ class Route
}
// 注册任意请求的路由规则
public static function any($rule = '', $route = '', $option = [], $pattern = [])
public static function any($rule, $route = '', $option = [], $pattern = [])
{
if ('' == $rule) {
// 获取路由定义
return self::$rules['*'];
}
self::register($rule, $route, '*', $option, $pattern);
}
// 注册get请求的路由规则
public static function get($rule = '', $route = '', $option = [], $pattern = [])
public static function get($rule, $route = '', $option = [], $pattern = [])
{
if ('' == $rule) {
// 获取路由定义
return self::$rules['GET'];
}
self::register($rule, $route, 'GET', $option, $pattern);
}
// 注册post请求的路由规则
public static function post($rule = '', $route = '', $option = [], $pattern = [])
public static function post($rule, $route = '', $option = [], $pattern = [])
{
if ('' == $rule) {
// 获取路由定义
return self::$rules['POST'];
}
self::register($rule, $route, 'POST', $option, $pattern);
}
// 注册put请求的路由规则
public static function put($rule = '', $route = '', $option = [], $pattern = [])
public static function put($rule, $route = '', $option = [], $pattern = [])
{
if ('' == $rule) {
// 获取路由定义
return self::$rules['PUT'];
}
self::register($rule, $route, 'PUT', $option, $pattern);
}
// 注册delete请求的路由规则
public static function delete($rule = '', $route = '', $option = [], $pattern = [])
public static function delete($rule, $route = '', $option = [], $pattern = [])
{
if ('' == $rule) {
// 获取路由定义
return self::$rules['DELETE'];
}
self::register($rule, $route, 'DELETE', $option, $pattern);
}
// 获取路由定义
public static function getRules($method = '')
{
if ($method) {
return self::$rules[$method];
} else {
return self::$rules['*'] + self::$rules['GET'] + self::$rules['POST'] + self::$rules['PUT'] + self::$rules['DELETE'];
}
}
// 检测子域名部署
public static function checkDomain()
{

View File

@@ -46,7 +46,11 @@ class Url
$url = $aliasUrl;
} else {
// 检测路由
$match = self::checkRoute($url, $vars, $domain);
if (!$match = Cache::get(md5($url))) {
// 没有检测过 重新检测
$match = self::checkRoute($url, $vars);
Cache::set(md5($url), $match);
}
if (false === $match) {
// 路由不存在 直接解析
if (false !== strpos($url, '\\')) {
@@ -140,10 +144,10 @@ class Url
return $url;
}
protected static function checkRoute($url, $vars, $domain)
protected static function checkRoute($url, $vars)
{
// 获取路由定义
$rules = Route::any();
$rules = Route::getRules();
// 全局变量规则
$pattern = Route::pattern();
foreach ($rules as $rule => $val) {