route目录下的任何路由定义文件都是有效的,默认的路由定义文件是route.php,但你完全可以更改文件名,或者添加多个路由定义文件(你可以进行模块定义区分,但最终都会一起加载)。
例:

├─route                 路由定义目录
│  ├─route.php          路由定义
│  ├─api.php            路由定义
│  └─...                更多路由定义

路由定义有多种形式和方法,和通过查看官方手册来学习:https://www.kancloud.cn/manual/thinkphp5_1/353962

路由分组:

路由分组功能允许把相同前缀的路由定义合并分组,这样可以简化路由定义,并且提高路由匹配的效率,不必每次都去遍历完整的路由规则(尤其是开启了路由延迟解析后性能更佳)。

格式:

Route::group('分组名(字符串)或者分组路由参数(数组)','分组路由规则(数组或者闭包)');

例:

Route::group('blog', [':id'   => 'Blog/read',':name' => 'Blog/read',
])->ext('html')->pattern(['id' => '\d+']);``````````````````````

路由分组还有很多其他形式的使用,可以查看手册加以实现

调用的方法:

//类为\think\Route/*** 注册路由分组* @access public* @param  string|array      $name       分组名称或者参数* @param  array|\Closure    $route      分组路由* @param  array             $option     路由参数* @param  array             $pattern    变量规则* @return RuleGroup*/public function group($name, $route, array $option = [], array $pattern = []){if (is_array($name)) {$option = $name;$name   = isset($option['name']) ? $option['name'] : '';}return (new RuleGroup($this, $this->group, $name, $route, $option, $pattern))//是否域名延迟路由解析操作->lazy($this->lazy)//是否合并分组数组操作->mergeRuleRegex($this->mergeRuleRegex);}

域名路由:

ThinkPHP支持完整域名、子域名和IP部署的路由和绑定功能,同时还可以起到简化URL的作用。

Route::domain('blog', function () {// 动态注册域名的路由规则Route::rule('new/:id', 'index/news/read');Route::rule(':user', 'index/user/info');
});

闭包中可以使用路由的其它方法,包括路由分组,甚至给域名设置MISS路由。

调用的方法:

//类为\think\Route
/*** 注册域名路由* @access public* @param  string|array  $name 子域名* @param  mixed         $rule 路由规则* @param  array         $option 路由参数* @param  array         $pattern 变量规则* @return Domain*/public function domain($name, $rule = '', $option = [], $pattern = []){// 支持多个域名使用相同路由规则$domainName = is_array($name) ? array_shift($name) : $name;if ('*' != $domainName && !strpos($domainName, '.')) {$domainName .= '.' . $this->request->rootDomain();}if (!isset($this->domains[$domainName])) {$domain = (new Domain($this, $domainName, $rule, $option, $pattern))->lazy($this->lazy)->mergeRuleRegex($this->mergeRuleRegex);$this->domains[$domainName] = $domain;} else {$domain = $this->domains[$domainName];$domain->parseGroupRule($rule);}if (is_array($name) && !empty($name)) {$root = $this->request->rootDomain();foreach ($name as $item) {if (!strpos($item, '.')) {$item .= '.' . $root;}$this->domains[$item] = $domainName;}}// 返回域名对象return $domain;}

延迟路由解析:

新版路由支持延迟路由解析,也就是说你定义的路由规则(主要是分组路由和域名路由规则)在加载路由定义文件的时候并没有实际注册,而是在匹配到路由分组或者域名的情况下,才会实际进行注册和解析,大大提高了路由注册和解析的性能。

// 开启路由延迟解析
'url_lazy_route'         => true,

默认是关闭延迟路由解析的,你可以在应用的app.php配置文件中设置:

总结:

  1. 路由分组可以把匹配范围缩小到一个组的范围,从而提高匹配效率。
  2. 域名路由可以对同一个子域名进行分组,从而缩小匹配范围,提高匹配效率。
  3. 从调用的方法源码可以看出延迟路由解析对分组路由和域名路由都会产生影响,都可以减少路由注册和解析,从而提高其性能

tp5.1 分组路由和域名路由相关推荐

  1. tp5.1的域名路由和分组路由

    1.域名路由, 官网解释:https://www.kancloud.cn/manual/thinkphp5_1/353976 使用Route::domian()->bind();的形式,给一个模 ...

  2. 【计算机网络】网络层 : 路由算法 ( 路由算法分类 | 静态路由算法 | 动态路由算法 | 全局性动态路由算法 | 分散性动态路由算法 | 分层次路由选择协议 )

    文章目录 一.路由算法 二.路由算法 分类 三.静态路由算法 四.动态路由算法 五.动态路由算法 分类 六.分层次的路由选择协议 一.路由算法 路由算法 : 选择数传输的 "最佳路由&quo ...

  3. 4.2.1 路由算法与路由协议概述(静态路由和动态路由---距离-向量路由算法---链路状态路由算法、层次路由)

    文章目录 0.思维导图 1.路由算法分类与路由表 2.静态路由和动态路由 3.动态路由的两种算法:链路状态路由算法和距离向量路由算法 4.层次路由 0.思维导图 1.路由算法分类与路由表 路由器转发分 ...

  4. SAP UI5 应用开发教程之三十一 - SAP UI5 的路由历史和路由回退(Routing back and history)试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  5. python距离向量路由算法_路由算法(全网最细)

    我在复习过程中整理的面试系列文章,全部免费分享给大家,适合保研和考研,需要的请移步我的个人原创公zhong号:程序员宝藏(号如其名,诚不欺你),回复关键字:复试上岸,即可获取! 正文开始 正文开始 1 ...

  6. 硬路由、软路由、主路由、旁路由对比分析

    日常生活中"路由器"对于每个人来说都是不会陌生的,简单来说我们上网就离不开路由器,而作为代码搬运工,路由器.路由等名词对我们来说更是需要深入了解的. 一.路由 1.概念 路由(ro ...

  7. php 各种路由分析_thinkphp5路由详解

    tp5路由视频https://ke.qq.com/webcourse/index.html#course_id=235325&term_id=100277509&taid=153975 ...

  8. 计算机网络基础(静态路由,动态路由,公网IP,私网IP,NAT技术)

    文章目录 一:静态路由和动态路由 二:静态路由的配置路由信息的方式演示 三:默认路由 四:公网IP和私网IP和NAT技术的基本理解 一:静态路由和动态路由 在说静态路由和动态路由前,我们需要来了解一下 ...

  9. R2S食用指南(含 R2S软路由系统刷入、R2S做主路由、二级路由AP模式、NAS的DDNS实现+URL转发)

    R2S食用指南(含 R2S软路由系统刷入.R2S做主路由.二级路由AP模式.NAS的DDNS实现+URL转发)// 最后更新2022.2.16 推荐一个istoreos,体验还不错的,作者的还有些产品 ...

最新文章

  1. em算法怎么对应原有分类_[PRML]序列数据 HMM维特比算法及扩展
  2. script id=tp type=text/html,demo.html
  3. P3768-简单的数学题【莫比乌斯反演,杜教筛】
  4. Windows10远程报错:由于CredSSP加密Oracle修正
  5. 夸克、QQ浏览器、简单搜索竞品分析报告
  6. ssms 缺少索引信息_搜索引擎整合营销
  7. html跑马灯效果代码加速,网页特效_跑马灯特效代码大全一
  8. 数字信号处理课程设计---带通滤波器的设计及其matlab实,数字信号处理课程设计---带通滤波器的设计及其MATLAB实现...
  9. 【算法】07 AM-MCMC算法C++实现
  10. TP-LINK-TL-WR703N刷Breed用Openwrt固件挂MP288打印机服务共享手机打印服务
  11. 企业流程再造(BPR)
  12. 云原生中为什么需要API网关?
  13. vue向后端发送数据并得到返回值
  14. linux 根据文件路径自动创建文件夹
  15. Python 将图片合成视频
  16. matlab偏导数方程,[转载]Matlab求解微分方程(2)——偏微分方程的求解
  17. iPhoneX上必须要有的几款手机APP
  18. 【数据集显示标注】VOC文件结构+数据集标注可视化+代码实现
  19. Matlab拟合工具箱的使用
  20. zoj 2334 Monkey King

热门文章

  1. android几种网络框架的比较
  2. 如何在新的Excel工作簿中更改默认的工作表数
  3. 线程池(java.util.concurrent.ThreadPoolExecutor)的使用
  4. vue3+ Micro App (一)
  5. 白盒测试方法之判定覆盖测试/分支覆盖测试
  6. mysql 脚本超时 导入_BigDump -解决PHPmyadmin导入超大 MySQL 数据库备份文件脚本超时...
  7. mysql 主从复制 监控_监控MySQL主从复制状态的脚本
  8. FATFS最新R0.13官方源码下载
  9. switch-case和if-else的效率比较·必看
  10. 用python写一个图形界面!