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