laravel 新项目修改路由、添加路由不起作用 - 路由缓存和清理
新项目到手后,运行项目报错: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 倍。
什么场景适合使用路由缓存?
显然是在应用部署之后。测试环境可能因为让不太熟悉框架的人摸不着头脑(比如我),并且开发过程中会经常修改路由,每次还要重新生成路由缓存才能使其生效,比较麻烦,所以开发环境一般不建议使用。