【问题标题】:Laravel 5 Cached Routes not updatingLaravel 5 缓存路由不更新
【发布时间】:2015-06-01 23:53:13
【问题描述】:

我已经通过 php artisan route:cache 缓存了我的 Laravel 5 路由。 这成功了很长一段时间,当我更改路线时,可以再次缓存它们,一切都会正常工作。

问题是我已经将一些路由移动到另一个路由组,并且似乎由于某种原因它们不会被缓存。

我尝试再次缓存它们,但没有成功。我也试过php artisan cache:clear,但还是不行。

Routes.php 更改:

Route::group(['prefix' => 'api', 'middleware' => 'auth'], function () {
   Route::get('invites', 'InvitationController@get');
   Route::get('invites/check', 'InvitationController@check');
});

改为:

Route::group(['prefix' => 'api'], function () {
   Route::post('auth', 'Auth\AuthController@authenticate');
   Route::get('invites', 'InvitationController@get');
   Route::get('invites/check', 'InvitationController@check');
});

如您所见,我已将那些 invitation 路由移至没有 Authenticate 中间件的 Route 组。当我再次缓存路由时,即使将它们移出组,它仍然会执行Auth 中间件..

【问题讨论】:

  • 您确定是缓存问题吗?另外,请向我们展示您的路线代码
  • 是的,请参阅路线编辑。我在身份验证中间件中尝试了 dd('test') ,即使它不再在 Route 组中,路由也是使用中间件的。
  • 身份验证中间件是否也可能在其他地方注册?可能在控制器中?要检查这是否真的是一个缓存问题,请更改您的测试路由的 URL。点赞Route::get('invites2', ...,再次缓存,尝试访问路由。如果你得到一个 404 这不是缓存问题。
  • 在此之前有路线吗?
  • 我已将invites 更改为invites2 并在缓存后显示NotFoundHttpException... 真的很奇怪。中间件被注册为别名,并且没有在控制器的其他地方使用..

标签: php laravel laravel-5 laravel-routing


【解决方案1】:

在 laravel 5.* 中删除缓存路由的正确语法是

php artisan route:clear

问候

【讨论】:

  • 如果在那之后你仍然有错误,你可能想在那之后运行php artisan route:cache来加载你的更新。难倒了我几分钟!
  • 对于来自谷歌的路线更新问题的人:尝试clear your browser's cache
  • 这很有趣,我在服务器 .env 文件中将 url 变量 APP_URL 设置为 localhost。修正后现在运行正常。
【解决方案2】:

如果您不想每次更改都再次优化。 你可以试试这个;

CACHE_DRIVER=要更改的文件 => CACHE_DRIVER=array

之后,您应该清除文件夹“bootstrap/cache”

我希望它有效。

【讨论】:

    【解决方案3】:

    试试:

    php artisan optimize
    

    这将清除所有路由缓存以及文件缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-08
      • 2017-01-27
      • 2016-06-07
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      相关资源
      最近更新 更多