You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP OPcache是否会缓存file_get_contents()加载的文件?附代码场景咨询

PHP OPcache 与 file_get_contents() 加载文件的缓存问题

直接给你明确结论:OPcache 不会缓存通过 file_get_contents() 加载的 test.json 文件内容,但会缓存包含这行代码的 PHP 脚本本身的编译结果。

具体拆解一下:

  • OPcache 的核心作用是缓存PHP 脚本编译后的 opcode(操作码),它只处理被 PHP 解析器识别为 PHP 代码的文件(通常是 .php 后缀,或者被配置为 PHP 解析的文件)。对于 test.json 这种非 PHP 文件,OPcache 完全不会对其进行缓存处理——每次调用 file_get_contents('./test.json'),PHP 都会从磁盘读取这个文件的内容,除非你自己实现了额外的缓存逻辑。
  • 至于你写的那行 PHP 代码:<?php $array = json_decode(file_get_contents('./test.json'), true);,当这个 PHP 脚本第一次被执行时,OPcache 会将整个脚本编译后的 opcode 缓存起来,后续请求时直接复用 opcode,避免重复编译脚本本身,但这并不包含 file_get_contents() 读取到的 JSON 数据。

如果想优化 JSON 文件的读取性能,你可以试试这些方案:

  • 将 JSON 内容转换成 PHP 文件,比如写成 <?php return ['key' => 'value', ...];,然后用 include 或 require 引入——这样 OPcache 就会缓存这个 PHP 文件的编译结果,相当于间接缓存了原本的 JSON 数据。
  • 使用专门的缓存工具,比如 APCu、Redis 或 Memcached,手动将 JSON 内容缓存到内存中,减少磁盘 IO。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:32:43