【发布时间】:2014-06-29 19:28:49
【问题描述】:
我想我对“Zend Opcache”的实际工作方式有些疑问,我想知道我应该如何只将我通过 PHP include() 方法包含的文件保存在缓存中?似乎即使没有指定opcache_compile_file() 所有文件都被缓存,包括“index.php”,我不想这样做。事实上,我在索引中分配的所有变量都不会为每个会话刷新,但我只看到索引的缓存版本。
谁能解释一下?
在此先感谢
【问题讨论】:
我想我对“Zend Opcache”的实际工作方式有些疑问,我想知道我应该如何只将我通过 PHP include() 方法包含的文件保存在缓存中?似乎即使没有指定opcache_compile_file() 所有文件都被缓存,包括“index.php”,我不想这样做。事实上,我在索引中分配的所有变量都不会为每个会话刷新,但我只看到索引的缓存版本。
谁能解释一下?
在此先感谢
【问题讨论】:
Zend OpCache 只是 PHP 操作码的缓存,它使处理器不必将源代码转换为操作码,直到它(源代码)发生更改。如果您需要对脚本使用的数据进行用户态缓存,请使用 APCu。当您说您的变量未刷新时,您的网络服务器前面是否有反向代理?
【讨论】:
include 像这样的非 php 文件(通常只是将其与 HTML 一起发送并让浏览器或反向代理缓存它)。因此,操作码会将内容缓存在内存中,以便更快地加载。
我曾经遇到过同样的问题,我想出了这个解决方案: 在 opcache 配置中,我将 opcache.blacklist_filename 设置为外部黑名单文件的路径,我在其中写入了我不想被缓存的类的名称。 有关详细信息,请参阅此处的文档http://www.php.net/manual/en/opcache.configuration.php#ini.opcache.blacklist-filename
【讨论】: