6

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

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

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

4

1 回答 1

7

如果我在启用 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 } ?>
于 2012-10-18T17:16:31.420 回答