菜单开关

周梦康 发表于 2019-01-06 33 次浏览

免费领取阿里云优惠券 我的直播 - 《PHP 进阶之路》

由于现在项目业务越来越复杂,pc 上的路由因为支持多种请求方式,导致路由配置在1000多次,路由性能损耗20~25ms,基本不能忍。这种看似简单的写法背后是严重的性能损耗。

重构想法

  • 对路由进行一定范围的约束,通过约定来减少配置,减少运算。
  • 不规则路由优先使用 nginx rewrite
  • 访问量低的路由可以继续在 php 里配置,不推荐,但功能支持。

也就是说系统加载过程中不一定有路由的全量初始化,这一步是可以跳过的。

对路由进行一定范围的约束,通过约定来减少配置,减少运算

比如一个博客模块,存在的路由可能是这样的

# get 
https://mengkang.net/blog
https://mengkang.net/blog/create
https://mengkang.net/blog/1234
https://mengkang.net/blog/1234/update

# post api
https://mengkang.net/blog/create
https://mengkang.net/blog/1234/update

一个问答模块,存在的路由可能是这样的

# get 
https://mengkang.net/ask
https://mengkang.net/ask/create
https://mengkang.net/ask/1234
https://mengkang.net/ask/1234/update

# post api
https://mengkang.net/ask/create
https://mengkang.net/ask/1234/update

这样我们就可以优先推断,然后根据框架的约定找到对应的方法

namespace App\Pc\Controller;
use Yq\Controller\WebController;

class BlogController extends WebController
{

    public function indexAction(){

    }

    public function createAction(){

    }

    public function showAction(){

    }

    public function modifyAction(){

    }
}
namespace App\Mobile\Controller;

class BlogController extends \App\Pc\Controller\BlogController
{

    public function indexAction(){

    }
    
    public function createAction(){

    }

    public function showAction(){

    }

    public function modifyAction(){

    }
}
namespace App\Api\Controller;
use Yq\Controller\ApiController;

class BlogController extends ApiController
{

    public function createAction(){

    }
    
    public function modifyAction(){

    }

    public function showAction(){

    }

    public function deleteAction(){

    }
}

嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

评论列表