APC对静态内容做了什么

时间:2012-10-18 16:53:17

标签: php apc

假设我强迫mod_php接收.html个文件。假设其中一个文件中有0个PHP代码。

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

另一种情况是,我有一个.php文件。 PHP标记之外的内容会发生什么?它是否存储在内存中?或者每次都必须从磁盘读取它?

1 个答案:

答案 0 :(得分:7)

  

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

如果您将.html个文件设置为解析为PHP,那么是 - 它将被缓存。排序。

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

  

另一种情况,我有一个.php文件。 PHP标记之外的内容会发生什么?它是否存储在内存中?或者每次都必须从磁盘读取它?

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

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

VS

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