【问题标题】:Php Zend Opcache caching include filesPHP Zend Opcache 缓存包含文件
【发布时间】:2014-06-29 19:28:49
【问题描述】:

我想我对“Zend Opcache”的实际工作方式有些疑问,我想知道我应该如何只将我通过 PHP include() 方法包含的文件保存在缓存中?似乎即使没有指定opcache_compile_file() 所有文件都被缓存,包括“index.php”,我不想这样做。事实上,我在索引中分配的所有变量都不会为每个会话刷新,但我只看到索引的缓存版本。 谁能解释一下? 在此先感谢

【问题讨论】:

    标签: php html


    【解决方案1】:

    Zend OpCache 只是 PHP 操作码的缓存,它使处理器不必将源代码转换为操作码,直到它(源代码)发生更改。如果您需要对脚本使用的数据进行用户态缓存,请使用 APCu。当您说您的变量未刷新时,您的网络服务器前面是否有反向代理?

    【讨论】:

    • 不,它可以缓存任何文件,如果你包含(“toto.css”);,toto.css会被缓存! (例如,来自我的 opcache_get_status() “/var/www/production/20140708212446/www/static/css(1 个文件)文件名命中内存上次使用创建的 mobile_home.css 4 888B 23:00:14 08-07-2014 19: 25:04 08-07-2014")
    • 好的,但是你这样做有什么收获(如果有的话)?
    • 啊,有趣。我几乎从不include 像这样的非 php 文件(通常只是将其与 HTML 一起发送并让浏览器或反向代理缓存它)。因此,操作码会将内容缓存在内存中,以便更快地加载。
    • 是的。有时我会内联 CSS(对于非常小的 CSS 文件,尤其是在移动环境中,这是一种很好的做法)。
    【解决方案2】:

    我曾经遇到过同样的问题,我想出了这个解决方案: 在 opcache 配置中,我将 opcache.blacklist_filename 设置为外部黑名单文件的路径,我在其中写入了我不想被缓存的类的名称。 有关详细信息,请参阅此处的文档http://www.php.net/manual/en/opcache.configuration.php#ini.opcache.blacklist-filename

    【讨论】:

      猜你喜欢
      • 2019-09-09
      • 2016-09-18
      • 1970-01-01
      • 2017-10-01
      • 2016-10-19
      • 2013-06-11
      • 2021-10-29
      • 2018-03-10
      • 2021-10-08
      相关资源
      最近更新 更多