zoukankan      html  css  js  c++  java
  • 填一个laravel视图缓存没有及时更新的坑

    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文件的修改时间比缓存文件的时间小时 才会使用缓存。
    所以,很可能是我机器的时间问题。

    所以出现这种情况时要么执行php artisan view:clear命令清除缓存,要么修改机器时间问题

  • 相关阅读:
    Vue里用moment.js
    回到顶部|回到底部功能的实现(Vue)
    Vue绑定下拉框型的树
    Excel导入数据库前后端代码
    Windows应用程序开发笔记-控制和获取其他程序窗口控件内容
    SQL Server查询、添加、修改表和字段的备注描述
    windows 共享文件夹,和共享打印机
    Visual Studio 2015安装过程卡住,解决办法
    python绘图 初识Python绘图
    GCC、LLVM、Clang
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/10148204.html
Copyright © 2011-2022 走看看