新项目到手后,运行项目报错:Route [admin.shop.getData] not defined.。网上有说什么在 group 下需要定义 'as'=>'admin.' 才能生效,试了几次无反应。

检查对应的路由,怎么看都很标准。尝试注释中间件,无效果。想不通,就先在 routes.php 下添加一个测试路由:

Route::get('foo', function () {
    return 'Hello World';
});

依旧没反应。通过命令行指令 php artisan route:list 查看路由列表,仔细对比发现,有很多条路由都没有生效。百度了一下 laravel 路由未生效,终于有了结果。

原来 laravel 有一个路由缓存的功能,只要启用一次之后,不管是增加还是修改的路由都需要再次执行一次才能生效。相当于是把路由列表做了缓存。当然也有办法清除路由缓存:

php artisan route:clear

附:生成路由缓存:

php artisan route:cache

为什么要使用路由缓存?

如果您的应用程序只使用了基于控制器的路由,那么您应该利用 Laravel 的路由缓存。路由缓存会大大减少注册所有路由所需的时间。在某些情况下,路由注册的速度甚至能快上 100 倍。

什么场景适合使用路由缓存?

显然是在应用部署之后。测试环境可能因为让不太熟悉框架的人摸不着头脑(比如我),并且开发过程中会经常修改路由,每次还要重新生成路由缓存才能使其生效,比较麻烦,所以开发环境一般不建议使用。