网站文件缓存在运行 PHP 5.5.28 的 Debian Web 服务器上

网站文件缓存在运行 PHP 5.5.28 的 Debian Web 服务器上

当我对我的网站进行小改动并上传时,通常需要几分钟才能让这些更改实时反映出来。只有在我通过 Google Compute Engine 安装了新的 Debian 系统后,这种情况才开始发生。

我已经排除了我有缓存它的代码,但 PHP 5.5.28 或 Debian 有可能缓存文件吗?我还检查过以确保它不是浏览器,并使用了 chrome 选项不在开发人员工具中缓存文件。

答案1

您正在使用 PHP 5.5.28,根据我的经验,任何从 PHP 5.3 或 5.4 跳转到 PHP 5.5 的人都需要注意新的内置OPcache(操作缓存)默认启用。

如果你曾经使用过APC(替代 PHP 缓存),新的内置 OPcache 的工作原理几乎相同,并且对于复杂代码的生产目的非常有用,但如果您习惯上传文件并立即显示更改,则默认启用它可能会给您带来麻烦。

这个网站做得很好解释什么是 OPcache 以及如何调整它。但如果你还不需要 OPcache,只需像这样打开你的 PHP ini 文件即可;我更喜欢使用nano但请随意使用您喜欢的任何文本编辑器:

sudo nano /etc/php5/apache2/php.ini

查找以下行:

opcache.enable=1

只需将该行更改为以下内容即可禁用它:

;opcache.enable=0

重新启动 Apache,现在 PHP 5.5 将不再使用 OPcache。老实说,启用这样的缓存应该是系统管理员的决定,他们了解代码的工作原理和服务器的反应方式

如果您的基于 PHP 的网站足够轻量,那么 OPcache 可能就有点大材小用了,实际上没有必要,甚至可能会造成妨碍。

但如果你需要 OPcache,但还需要定期更新 PHP 文件,也许调整 OPcache 的配置值会有所帮助。默认设置如下:

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

我认为该配置中可能导致预期更新失败的关键是opcache.revalidate_freq

检查脚本时间戳是否有更新的频率(以秒为单位)。0 将导致 OPcache 在每次请求时检查更新。

默认的 60 秒就可以了,但在我看来,将其降低opcache.revalidate_freq到 5 秒左右可能是更好地利用 OPcache 优势的方式,同时仍然有一个合理的更新检查窗口,这样您就不会被简单的文件更新绊倒。

相关内容