加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

填一个laravel视图缓存没有及时更新的坑

发布时间:2020-12-14 19:58:13 所属栏目:大数据 来源:网络整理
导读:1.此坑背景 laravel在渲染blade模板后,会将渲染好的结果存到storage/framework/views(默认路径,也可在配置中修改的)中,以便下次使用。但我最近总是发现修改了blade模板,但怎么刷新都还是有视图缓存。除非执行 php artisan view:clear 清空缓存。 googl

1.此坑背景

laravel在渲染blade模板后,会将渲染好的结果存到storage/framework/views(默认路径,也可在配置中修改的)中,以便下次使用。但我最近总是发现修改了blade模板,但怎么刷新都还是有视图缓存。除非执行 php artisan view:clear 清空缓存。

google 好多次,得到了以下结论:?1.laravel 的视图缓存是无法设置过期时间的。2.laravel的视图缓存功能是无法关闭的。

如果是这样,那一定是我的开发环境出了问题。因为现状很明显,竟然一直有缓存!?那么就开始解决问题之路。

2.先说结论我的开发机(用的vmware上的虚拟机)的系统时间和本地时间不一样导致模板文件更新有问题。解决方法:校准开发机时间

3.诊断过程 ----找到laravel源码中的处理逻辑1) 找到/vendor/laravel/framework/src/Illuminate/View/Compilers/ViewServiceProvider.php??第134行 registerBladeEngine? 模板引擎注册方法 发现其中会创建 BladeCompiler?一看名字就知道是它了? 快快进去看一下。

?

2) 进入/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler .php 找到其父类 /vendor/laravel/framework/src/Illuminate/View/Compilers/Compiler.php看第60行 的 isExpired 方法?

?

机智的发现,这里是通过文件的修改时间来判断是否要使用缓存的,且逻辑是 若blade文件的修改时间比缓存文件的时间小时 才会使用缓存。所以,很可能是我机器的时间问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读