首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在php artisan route之后:缓存我的路由停止工作,因为我有基于闭包的路由

在php artisan route之后,缓存路由停止工作的原因是因为基于闭包的路由无法被缓存。

闭包是匿名函数的一种形式,它可以在路由定义中直接使用,例如:

代码语言:txt
复制
Route::get('/', function () {
    return 'Hello World';
});

闭包路由的优势在于可以直接在路由定义中编写逻辑代码,非常灵活。然而,由于闭包是动态生成的,无法被缓存。

缓存路由是一种优化技术,可以将路由信息缓存起来,以提高路由匹配的性能。但是,由于闭包路由无法被缓存,所以在执行了php artisan route:cache命令后,基于闭包的路由将无法被缓存,从而导致缓存路由停止工作。

解决这个问题的方法是避免使用基于闭包的路由,而是使用控制器来处理路由逻辑。将闭包中的逻辑代码抽取到一个控制器方法中,然后在路由定义中指定控制器和方法,例如:

代码语言:txt
复制
Route::get('/', 'HomeController@index');

这样,路由定义中就不再包含闭包,而是指向了一个具体的控制器方法。这种方式可以被缓存,从而提高路由匹配的性能。

推荐的腾讯云相关产品是云服务器(CVM)和云函数(SCF)。

  • 腾讯云服务器(CVM):提供可扩展的云服务器实例,适用于各种规模的应用程序和工作负载。您可以根据实际需求选择不同的配置和操作系统,灵活部署和管理您的应用程序。
  • 腾讯云函数(SCF):是一种无服务器计算服务,可以让您在云端运行代码而无需管理服务器。您可以使用云函数来处理路由逻辑,将闭包中的代码封装成一个云函数,然后在路由定义中调用该云函数。

更多关于腾讯云服务器和云函数的详细信息,请访问以下链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel 5.0 之路由缓存

不过以后不用担心这个问题了, 因为 Laravel 5 引入了 路由缓存(route caching), 可以大大优化路由性能(方式定义路由不能缓存, 所以该把所有的路由定义都移到控制器中了...一个新 Artisan 命令 route:cache 可以把 routes.php 文件中所有路由定义序列化 -- 会对所有的路由进行一次解析然后把解析结果缓存起来....之后你可以对 routes.php 随意进行修改, 但应用路由不会发生变化, 一直到再次执行 route:cache 重新缓存. 优点和缺点 优点很明显: 网站速度会更快....第一种方法: 可以执行 artisan route:clear, 这样 artisan 会删除路由缓存. 第二种方法: 可以考虑只正式环境使用路由缓存....然后 Git post-deploy 钩子中执行 artisan route:cache, 或者部署脚本中来执行它.

1.4K80

全局梳理、分析、总结 laravel 核心概念

由于 Laravel 具备 Rails 敏捷开发等优秀特质,深度集成 PHP 强大扩展(Composer)生态,让 Laravel 发布之后短短几年时间得到了极其迅猛发展。...下面 分享一张 图片,此图是goole提供,laravel 在过去七年成长速度, php 框架自 有史以来也是最快。 ?...路由缓存/清理 (注:基于路由无法被缓存。要使用路由缓存,你需要将代码从转移到控制器类中) 如果您应用程序只使用了基于控制器路由,那么您应该利用 Laravel 路由缓存。...要生成路由缓存,只需执行 artisan 命令 php artisan route:cache 运行此命令后,将在每个请求上加载缓存路由文件。...您可以使用 route:clear 命令来清除路由缓存php artisan route:clear 04 — 中间件 laravel 中间件想必大家不会那么陌生吧。它自带了一些中间件。

6K41
  • Laravel 中编写第一个 Artisan 命令

    我们执行 php artisan 命令时,artisan 就指的是根目录下 artisan 文件,所以命令需要在应用根目录下执行,然后 artisan 之后部门都是作为请求参数被控制台应用获取并处理...不同 Laravel 应用由于安装了不同扩展或编写了自定义 Artisan 命令,所以在当你准备了解一个新应用时,必要通过 php artisan list 快速浏览该应用支持所有命令。...:discover 用于重新构建缓存扩展 manifest queue:队列相关命令(队列教程中会详细介绍) route路由相关命令,route:cache 和 route:clear 分别用于缓存路由信息和清除路由缓存...; } 这样,应用根目录下运行 php artisan welcome:message 的话就可以打印上面这条欢迎信息了: 基于实现 Artisan 命令 当然,就像我们可以 routes/web.php...中基于实现简单业务逻辑一样,对于这么简单命令,我们也可以 routes/console.php基于实现: Artisan::command('welcome:message_simple

    3.1K20

    提高Laravel应用性能方法详解

    如果你想完全清除缓存,执行: php artisan config:clear 路由缓存 laravel中,路由也需要昂贵开销。...用以下命令缓存 routes.php 文件: php artisan route:cache 请注意,它不适用于。...如果你正在使用,这是一个很好机会将它们移动到控制器中,因为 artisan 命令尝试编译绑定到路径而不是正确控制器方法时会抛出异常。...要完全清理干净路由缓存,请运行以下命令: php artisan route:clear 类映射加载优化 一个中型项目中,存在数百个 PHP 源文件是很正常事情,由于良好编程习惯,我们会把代码做一些分离...建议是使用 memcached 作为 cache 和 session 驱动,但你可以选择任何你喜欢,只要它是基于内存工作

    1.9K20

    路由使用进阶(二)

    隐式绑定 使用路由模型绑定最简单方式就是将路由参数命名为可以唯一标识对应资源模型字符串(比如 task 而非 id),然后函数或控制器方法中对该参数进行类型提示,此处参数名需要和路由参数名保持一致...,以后每次访问包含 {task_model} 参数路由时,路由解析器都会从请求 URL 中解析出模型 ID ,然后从对应模型类 Task 中获取相应模型实例并传递给函数或控制器方法: Route...4、路由缓存 使用路由缓存之前,需要知晓路由缓存只能用于控制器路由,不能用于路由,如果路由定义中包含路由将无法进行路由缓存,只有将所有路由定义转化为控制器路由或资源路由后才能执行路由缓存命令:...php artisan route:cache 如果想要删除路由缓存,可以运行: php artisan route:clear 路由缓存对系统性能提升应该是微乎其微,但如果你很在意那几毫秒,则可以考虑...,但是需要付出代价是不能使用任何路由,此外,由于使用路由缓存需要在每次变动路由后重新生成缓存,所以建议应用部署脚本中执行 php artisan route:cache(运行此命令之前先要清理之前缓存

    8.5K40

    关于 Laravel 应用性能优化几点建议

    本身支持多种缓存驱动,可以非常方便地集成不同缓存系统,这里使用是 Redis 作为缓存驱动); PHP 本身不支持并发编程,但是可以引入队列系统异步处理耗时任务,比如邮件发送、涉及数据库操作数据统计和更新...其实是针对 Laravel 项目通用优化手段(请在线上生产环境执行这些优化命令,不要在开发环境执行,因为开发环境文件变动频繁,缓存没有意义,反而增加了清除缓存麻烦): 路由缓存:通过 php artisan...route:cache 命令可以缓存 Laravel 项目注册所有路由,避免请求期间动态解析,如果应用包含很多路由,这个优化效果还是很不错,对请求性能提升效果很显著; 视图缓存:通过 php artisan...注:以上三个优化手段 Laravel 部署文档中都有提及,从 Laravel 8 开始,路由缓存开始支持路由,此前是不支持,需要将所有路由处理重构为基于控制器动作方可,此外,运行 php artisan...预告篇:接下来,学院君更新完全栈工程师系列基础篇第三幕 Vue.js 教程后,会全面演示 Laravel 框架如何从无到基于 TDD 模式进行实战项目开发,包含后续性能优化、持续集成和应用部署等完整应用开发周期

    3.6K21

    最为常用Laravel操作(2)-路由

    基本路由// 接收一个 URI 和一个Route::get('hello', function () { return 'Hello, Laravel';});// 支持路由方法Route:...> '[a-z]+']);命名路由// 为路由指定名称Route::get('user/profile', function () { //})->name('profile');// 为控制器操作指定名称...' => 'Admin'], function(){ // 控制器 "App\Http\Controllers\Admin" 命名空间下});子域名路由Route::group(['domain...路由缓存# 添加路由缓存php artisan route:cache# 移除路由缓存php artisan route:clear路由模型绑定隐式绑定// {user} 与 $user 绑定, 如果数据库中找不到对应模型实例..., 需要使用 Route::bind 方法, 传递到 bind 方法会获取到 URI 请求参数中值, 并且返回你想要在该路由中注入类实例:public function boot(){

    18810

    Laravel5.1 框架路由基础详解

    */ Route::any('/any', function (){ return 'any能匹配所有的方法'; }); 3 路由参数 咱写项目的时候啊 经常需要从路由中捕获参数以便之后处理,那如何声明呢...$id; }); 3.2 可选参数 /** * 可选参数只要在参数名后面跟个问号就好,然后中给它个默认值就好。 */ Route::get('/user/{id}/name/{name?}...: /** * 参数写法简单 加个花括号就行,然后在后面的中捕获它就行。...甭担心,一步到位方法:app/Providers/RouteServiceProvider.php 文件中boot方法,添加一段代码就行: public function boot(Router...数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

    94641

    Laravel 非常规教程之0 引入篇

    老高又开始折腾laravel了 :-D (基于Laravel 5.2) 写在前面 此系列文章主要是记(瞎)录(扯)一些老高研究 laravel 5.2 时感悟。...ps.Laravel老高去年就开始关注了,因为太忙(懒)了,所以一直没有深入学习这个框架。不过不要紧,该来还是会来问题请直接留言,老高会及(偶)时(然)回复你!...惯例代码 代码里常见用法,还有用法要习惯! <?...laravel严重依赖PHP包管理系统Composer,是好事也是坏事,但总归是好事!(到底在说啥?)...php artisan down 基础 你需要理解请求、路由等概念,具体还是先看官方文档吧 artisan命令行工具 灵活运用artisan命令行工具,可以帮你提高100%效率!

    88940

    Laravel 简短学习 just write the code in the PHP way

    cache file for faster route registration 为了更快路由登记,创建一个路由缓存文件 route:clear Remove the route...cache file 清除路由缓存文件 route:list List all registered routes 列出全部注册路由 schedule schedule:run...Command 类构造器允许注入需要依赖,Laravel 服务容器 将会自动把功能类 DripEmailer 解析到构造器中 Route ---- 你可以 app/Http/routes.php...最基本 Laravel 路由仅接受 URI 和一个 view-Blade ---- Blade 是 Laravel 所提供一个简单且强大模板引擎。...相较于其它知名 PHP 模板引擎,Blade 并不会限制你必须得视图中使用 PHP 代码。所有 Blade 视图都会被编译缓存成普通 PHP 代码,一直到它们被更改为止。

    1.1K50

    laravel 学习之路 路由与控制器

    第二个参数可以是一个函数里面写请求定义路由时执行内容但是如果把代码都放这个函数中是臃肿且难以维护所以就需要使用控制器了。...很显然控制器就是来替代这第二个参数函数写起来也非常简单直接写控制器名即可,然后用 @ 符号分割控制器和控制器方法Route::get('test/index','TestController@...命令行也是可以加目录 1. php artisan make:controller Admin/StoreController --resource 2. php artisan make:controller...因为创建目录下我们还会创建更多路由器所以,我们应该使用 group 嵌套这种方式,比如说我们再有一个 app/Http/Controllers/Home/TagController.php 执行创建控制器命令...php artisan make:controller Home/TagController --resource 那么路由就是这样 Route::prefix('home')->namespace

    1K10

    自动化部署 - Laravel Deploy实战

    Deployer 是一个基于 SSH 协议无侵入 web 项目部署工具,因为它不需要你目标服务器上装什么服务之类东西即可使用,它原理就是通过 SSH 到你机器去创建目录,移动文件,执行指定动作来完成项目的部署...他支持多种框架:Laravel、Yii等 流程: 本地使用 composer 安装 deployer Linux 服务器添加账户与配置权限 项目 git 仓库允许服务器访问(clone 代码) 部署我们...# 期间会看到很多部署日志输出 如果有什么错误对应解决就行,这边有些扩展没有 安装了一下就好啦 Unable to prepare route [api/user] for serialization...这个问题是路由无法缓存,将apiuser路由和首页那个路由改成使用控制器或者注释掉,要记得提交代码 首次部署设置一下env,nginx配置也是需要创建。...修改 .env 后记得重新缓存配置 php artisan config:cache 另外需要注意是配置 nginx 站点时,网站根目录应该为 /path/to/project/current/public

    2.5K30

    Laravel8迁移压缩、任务批处理、速率限制优化 | 文末抽奖

    之前写了一篇Laravel提高DB查询效率文章,转发到群里后竟然有人质疑说“Laravel是他好几年前用框架,没想到现在还有人在用。” 纳尼,什么意思嘛?别忘了PHP是最好语言!...个人认为Laravel是非常优雅开发框架:优雅设计模式、强大功能实现、各种方便扩展、持续版本更新,更主要是迄今为止认为最优秀技术开发社区。 必须为Laravel打Call。...执行 schema:dump 即可: php artisan schema:dump // 转储当前数据库模式并删除所有现有的迁移… php artisan schema:dump --prune...使用 RateLimiter facade for 方法来定义一个速率限制器。for 方法第一个参数是速率限制器名称,第二个参数是一个函数,该函数返回速率限制器配置。...HTTP 请求实例,你可以基于请求或当前认证用户来动态设置速率限制。

    1.9K21

    Laravel框架下载,安装及路由操作图文详解

    这里我们要注意是,把laravel解压到了一个名为PHPprimary文件夹里,你们如果是直接解压到htdocs里则只需127.0.0.1:8000后面输入/laravel/public,若正常显示图片里...目录七:storage 编译后视图、基于会话、文件缓存和其它框架生成文件 ? 目录八:text 应用测试相关文件 ? 目录九:vendor Composer 依赖模块 ?...里面还有些具体文件介绍请附录:laravel目录结构介绍 这里就不做多介绍了 NO.3 Laravel路由 路由使用 首先,我们要先打开Laravel目录app目录,再点击APP目录里http...用于定义 Artisan 命令 routes/web.php 用于定义 Web 类型路由(重点,大部分情况下本书会用到) server.php 使用 PHP 内置服务器时 URL 重写(类似于 Apache... “mod_rewrite” ) storage 编译后视图、基于会话、文件缓存和其它框架生成文件 storage/app 目录可用于存储应用程序使用任何文件 storage/framework

    4.6K51

    Laravel项目的性能优化

    你需要做部署应用程序后,执行下面的这个命令: php artisan route:cache 但是,如果你添加或修改了任意一个路由信息,请不要忘记清除之前缓存以及重新执行缓存命令。...php artisan route:clear php artisan route:cache 注意,这只对控制器类路由有效。 缓存配置 就如路由一样,你同样可以应用中缓存配置文件。...不过不用担心,这里Artisan 命令专治这个。 php artisan config:cache 你部署之后可以使用它。和路由差不多,别忘了编辑东西时候清理一下缓存。...优化四:laravel 提升性能命令 php artisan optimize 优化五:使用性能更好Cache和Session驱动 Laravel默认是缓存,当你新建一个 Laravel 项目的时候...优化九: 数据表要建立索引 记住,必要时候请为您数据表建立索引。 这看起来像是个没什么卵用提示,但实际上这很有必要。 因为见过非常多应用,它们数据表没有索引。

    3.7K30

    Laravel 5.5 LTS 正式发布!

    早期 Laravel 版本中,你可以 App\Exceptions\Handler::render() 方法添加检查,并有条件地基于异常类型来返回响应。...; } }] ]); 以上示例使用来对属性校验,如果验证失败,则返回失败参数。...而在你中规中矩把验证内容搬到专用规则对象类之前,又或者仅仅只是一次性验证场景,用来测试自定义验证规则是最合适不过。...通过运行 php artisan help preset 命令,你可以看到可供选择内容:none、bootstrap、vu 以及 react: php artisan help preset Usage...自动发现 虽然 Laravel 不会很难安装,但是自动发现功能之后,你就可以不用在服务容器中设置提供器或别名。甚至,你还可以禁用特定软件自动发现~ 人生苦短 用 Laravel

    2.6K30

    Laravel 控制器:从 MVC 模式聊起

    1、控制器概述 到目前为止,我们定义所有路由都是基于函数实现,前面已经提到过,随着应用体量增长,不可能将所有路由都定义单个文件中,且对于复杂业务逻辑,函数也不足以支撑,所以和其他 Web...MVC模式 将所有业务逻辑一股脑放到控制器听起来挺不错,但是控制器更适合承担角色其实是负责对 HTTP 请求进行路由因为还有很多其他访问应用方式,比如 Artisan 命令、队列、调度任务等等,控制器并非唯一入口...,默认情况下,如果没有指定完整命名空间,那么路由文件 web.php 中所有控制器都位于 App\Http\Controllers 命名空间下,所以定义控制器路由时候可以省略这个命名空间前缀。...'); 你可以通过 Artisan 命令 php artisan route:list 查看应用所有路由: ?...http://blog.test/post/1 关于控制器我们就先聊到这里,什么问题,欢迎评论中与我讨论。

    11.3K51

    Laravel学习笔记(一)——初次见面,多多关照!

    可能是Django看多了,对这种不方便开发和使用框架有点反感。 慢慢了解到Laravel,她优美和简洁完全颠覆了对优美的理解。...,如果应用无需提供无状态、RESTful 风格 API,那么路由基本上都要定义 web.php 文件中。...console.php文件 console.php 文件用于定义所有基于控制台命令,每个都被绑定到一个控制台命令并且允许与命令行 IO 方法进行交互,尽管这个文件并不定义 HTTP 路由,但是它定义了基于控制台应用入口...Storage目录 storage 目录包含了编译后 Blade 模板、基于文件 Session、文件缓存,以及其它由框架生成文件,该目录被细分为成 app、framework 和 logs 子目录...artisan文件 artisan是Lavarel开发利器,几行命令轻松搞定网站上线、下线、维护、测试,数据库测试、代码测试等大部分便于开发工作。以后我们开发过程中会经常和他打交道!

    2.3K00
    领券