当我对我的网站进行小改动并上传时,通常需要几分钟才能让这些更改实时反映出来。只有在我通过 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 优势的方式,同时仍然有一个合理的更新检查窗口,这样您就不会被简单的文件更新绊倒。