假设我强迫mod_php接收.html
个文件。假设其中一个文件中有0个PHP代码。
如果我在启用APC的情况下浏览到该文件,会发生什么?它是否被缓存或是否仍需要从磁盘中读取?
另一种情况是,我有一个.php
文件。 PHP标记之外的内容会发生什么?它是否存储在内存中?或者每次都必须从磁盘读取它?
答案 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 } ?>