【问题标题】:What does APC do with static contentAPC 对静态内容有什么作用
【发布时间】:2012-10-18 16:53:16
【问题描述】:

假设我强制 mod_php 接收 .html 文件。假设这些文件之一中有 0 个 PHP 代码。

如果我在启用 APC 的情况下浏览到该文件,会发生什么?它会被缓存还是仍然需要从磁盘中读取?

另一种情况,我有一个.php 文件。 PHP 标签之外的内容会发生什么变化?它会存储在内存中吗?还是每次都要从磁盘读取?

【问题讨论】:

    标签: php apc


    【解决方案1】:

    如果我在启用 APC 的情况下浏览到该文件,会发生什么?它会被缓存还是仍然需要从磁盘中读取?

    如果您将.html 文件设置为解析为PHP,那么是的——它将被缓存。有点像。

    具体来说,PHP 将为文档生成一个 optree,它最终会成为一个非常短且无聊的程序,其中包含一个非常大的字符串常量。这最终将存储在内存中。但是,如果这就是您所追求的,那么您最好使用 mod_mem_cache(与 memcached 无关!)之类的东西,因为它实际上是为缓存静态内容而设计的。

    另一种情况,我有一个 .php 文件。 PHP 标签之外的内容会发生什么变化?它会存储在内存中吗?还是每次都要从磁盘读取?

    正如我之前提到的,PHP 标记之外的内容仍然被视为 PHP“程序”的一部分——尽管它在内部的处理方式略有不同,由 ?> ... <?php 包围的一大块静态文本(或开头或文件的结尾)被有效地视为在echo "..." 中。 (除了没有涉及在该字符串中转义的所有问题。)例如,以下两个代码块在功能上或多或少相同,除了空格的一些差异:

    <?php
      if ($condition) {
          echo "Hello";
      }
    ?>
    

    对比

    <?php if ($condition) { ?>
        Hello
    <?php } ?>
    

    【讨论】:

    • 我不想实现这个。只是好奇。
    • 对于在 php 标签之外带有 html 的 php 文件会发生同样的事情吗?
    • 已编辑以涵盖该内容!短版:是的。
    • 顺便说一句,这是一个很好的理由,除非您绝对需要,否则不要将静态文件(如 HTML)解析为 PHP —— 通过 PHP 解析器运行它们会减慢速度,最终会变得更有用您的 APC 缓存中的操作码。
    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多