Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1345|回复: 0

laravel 路由修改不起作用解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-9 15:35:50 | 显示全部楼层 |阅读模式

    起由:今天帮朋友解决了下bug,bug就是它使用laravel时候,怎样修改路由文件,都没有发生变化,但是故意在routes.php中增加语法错误时又具有错误,因此想到了可能是这个项目使用的laravel的路由缓存,而且其路由文件中就有很多很多的路由,因此更加断定项目使用了路由缓存。

    解决方案:每次在修改路由文件的时候,在项目中打开命令行,执行php artisan route:cache进行重新缓存,这样修改的路由文件才可以起作用

    laravel路由缓存的优点:

      当路由定义特别多的时候,每次进行注册都非常耗时,为了达到更好的用户体验,因此需要减少这部分代码的执行时间,而路由缓存可以更好的解决此问题

    laravel路由缓存的缺点:

      就像此次的bug一样,有的人可能会很难排查到这个问题,若是不考虑缓存,此问题非常之诡异。

      开启路由缓存,每次更新路由文件的时候都要再生成一次缓存

      缺点解决方案:

        当项目上线的时候,再开启此功能

     

    参考文章:http://www.tuicool.com/articles/jUZjMj               由衷的感谢此作者分享

     

    附文章:

      

    本文译自 Matt Stauffer系列文章 .

    在 PHP 代码中进行性能优化并非总是我们优先考虑的问题. 但是我们对后端代码的性能优化--特别是在一些很复杂的操作上--可以对网站的请求时间产生几十甚至几百毫秒的影响. 看上去不算很多, 但是 几百毫秒的差异对于你的应用的用户感知速度来说可能意味着巨大的差异 (链接可能需要扶墙访问).

    你可能没有注意到, 在 Laravel 4 以及更老版本中, 路由逻辑是性能上的一个瓶颈--特别是对于有很多路由定义的应用而言. 一个只有几百条路由定义的 Laravel 站点, 框架光注册路由就需要半秒多的时间. 不过以后不用担心这个问题了, 因为 Laravel 5 引入了 路由缓存(route caching) , 可以大大优化路由的性能(闭包方式定义的路由不能缓存, 所以该把所有的闭包路由定义都移到控制器中了).

    使用路由缓存

    老实说, 使用路由缓存很简单. 有一个新的 Artisan 命令 route:cache 可以把 routes.php 文件中的所有路由定义序列化 -- 会对所有的路由进行一次解析然后把解析结果缓存起来. 如果你曾经用过 Handlebars 模板的预编译的话, Laravel 5 的路由缓存机制跟它有点类似.

    这样就已经搞定了. 执行完这个命令以后, 所有的路由都是从缓存文件而不是路由文件进行读取. 之后你可以对 routes.php 的随意进行修改, 但应用的路由不会发生变化, 一直到再次执行 route:cache 重新缓存.

    优点和缺点

    优点很明显: 网站的速度会更快.

    但缺点也不得不提: 只要缓存过一次网站的路由定义, 以后每次对 routes.php 文件进行修改都需要重新执行缓存操作, 否则修改不会生效. 这可能会造成部分开发者的疑惑, 有可能你可能怎么修改 routes.php 都没用, 偏偏一时没想到是路由缓存造成的.

    幸亏有两个方法可以解决这个问题. 第一种方法: 可以执行 artisan route:clear , 这样 artisan 会删除路由缓存. 第二种方法: 可以考虑只在正式环境使用路由缓存. 然后在 Git 的 post-deploy 钩子中执行 artisan route:cache , 或者在部署脚本中来执行它.

    写在最后

    如果觉得路由缓存带来的性能提升还不如造成的潜在混乱和麻烦多, 你可以当这个特性不存在. 但是对于有更好的部署流程管理的团队来说, 能够这么简单就能减少每个页面半秒钟以上的加载时间, 这价值就太大了.

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 13:25 , Processed in 0.058192 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表