You need to enable JavaScript to run this app. Laravel 7为什么在/storage/framework/views/生成视图,如何停止生成?
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 7为什么在/storage/framework/views/生成视图,如何停止生成?

Laravel 7 storage/views 目录自动生成哈希视图文件的原因与处理方式

一、为什么会自动生成这些文件

这不是框架出bug了,是Blade模板引擎从设计之初就内置的标准运行逻辑:

  • 你编写的.blade.php源文件里,带{{ 变量输出 }}、@if、@foreach这类专属标记的内容,不是PHP能直接解析执行的原生代码
  • 为了避免每次渲染视图都从头解析Blade语法、拖慢响应速度,Blade编译器会把源视图转换成纯原生PHP代码,持久化存放到默认的storage/framework/views目录下
  • 那些文件名是一长串无意义字符的PHP文件,本质是编译器根据源视图的绝对路径、源文件最后修改时间算出来的SHA1哈希值。框架每次加载视图时会自动校验匹配关系:只要源视图没动过,就直接读对应的缓存文件跳过编译步骤;一旦检测到源视图的修改时间比缓存文件新,就会自动重新编译、生成新的哈希缓存文件。

二、关于停止这类文件自动生成的实际方案

首先要明确:完全禁止视图编译文件落盘,本质是绕过Blade的核心设计逻辑,不建议长期使用这类配置,你可以根据自己的实际需求选择对应的处理方式:

  • 如果只是开发过程中看着目录下堆积一堆无意义的哈希文件不舒服,想定期清理:
    完全不需要改核心代码。开发环境下框架本身会自动识别源文件的修改状态,废弃的旧缓存本来就不会被加载,只是残留在目录里而已。定期执行php artisan view:clear就能一键清空storage/framework/views下的所有编译残留,不会影响正常的视图加载。
  • 如果是这些哈希文件干扰了IDE的文件索引、拖慢本地代码扫描速度:
    直接把storage/framework/views目录加到IDE的排除扫描列表就好,框架本身对这个目录的读写、正常编译逻辑完全不会受影响。
  • 如果是碰到了Blade编译异常,需要临时禁止缓存落盘排查问题(仅限短期调试,绝对不要在生产环境开):
    打开config/view.php配置文件,把cache配置项指向一个不存在的临时空目录。此时框架因为找不到可写的缓存存储路径,会直接在内存里完成Blade语法编译,不会在磁盘上生成实体的哈希缓存文件。但这种方式的代价很明显:每次请求都要重新做全量Blade语法解析,性能会掉一大截,只适合临时排查编译类问题的时候短时间用。

补充提示:生产环境一定要保留默认的视图缓存机制。预编译后的视图能带来非常明显的渲染性能提升,上线后如果需要调整视图内容,只需要在上线流程里加一步执行php artisan view:cache预编译全量视图即可,不需要额外调整目录权限或者改缓存逻辑。


内容的提问来源于stack exchange,提问作者Illyrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 17:06:04