在 macOS Ventura 下安装 apache2 + php82-fpm 似乎将 php 文件保留在缓存中

在 macOS Ventura 下安装 apache2 + php82-fpm 似乎将 php 文件保留在缓存中

在 macOS Ventura 下,macports 安装的 apache2 + php82-fpm 似乎在安装 php82-opcache 之前就将 php 文件保存在缓存中。

我不知道这是来自 apache2 还是 php82-fpm,并且我尝试像这样在脚本的标头中设置缓存控制,但没有成功:

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

我的生产服务器是在Linux下,根本没有出现这种问题。

当我清空浏览器的缓存时,脚本可以正确执行,而相反的情况下则不能。


编辑:当我意识到我有一个非默认值时,php_admin_value[session.save_path] 我删除了这个设置,并且一切都变得更好了。

答案1

Opcode 缓存和 http 缓存是截然不同的事情 - 只有非常简单的分析会混淆这两者。

虽然您的 HTTP 标头在大多数情况下会阻止 HTTP 缓存,但它们并不正确。

你没说为什么您认为数据已被缓存。

当我意识到 php_admin_value[session.save_path] 没有默认值时,我修复了这个问题

下次使用 Web 开发人员工具检查您的 Web 服务器和 PHP 日志以及发送到您的浏览器的内容。

相关内容