我想知道如何缓存动态PHP页面。它真的是关于预编译PHP代码并将其存储在字节码中吗?类似于Python的.pyc,它是一个更加编译并且可以执行的版本,因此如果系统发现.pyc文件比.py文件更新,那么它就不会重新编译为.py文件
PHP缓存主要是关于这个吗?有人可以提供更多关于此的信息吗?
答案 0 :(得分:3)
取决于您所谈论的缓存类型。操作码缓存与您所说的完全一样。它采用操作码并对其进行缓存,以便每当用户访问特定页面时,如果其编码已经编译并且在缓存中,则不需要重新编译该页面。如果你修改一个php文件,缓存机制将检测到这个并重新编译代码并将其放入缓存中。
如果您正在谈论缓存页面本身的数据,则完全不同。
有关操作码缓存的更多信息,请查看Alternative PHP Cache。
答案 1 :(得分:2)
你所描述的是PHP accelerator,他们完全按照你的说法行事;存储缓存的已编译字节码,以便同一脚本的多次执行只需要一次编译。
还可以缓存执行PHP脚本的结果。这通常需要至少一点逻辑,因为页面的内容可能在缓存后发生了变化。例如,您可以查看general cache feature provided by CodeIgniter。
答案 2 :(得分:1)
Peter D's answer很好地涵盖了操作码缓存。如果您的页面很简单,这可以节省超过50%的页面生成时间(主观)!
您想要了解的其他缓存是数据缓存。这可能是缓存数据库结果集,Web服务响应,HTML块甚至整个页面!
一个简单的“例子”应该说明:
$cache = new Cache();
$dataset;
if (!$dataset == $cache->get('expensiveDataset')){
//run code to fetch dataset from database
$dataset = expensiveOperation();
$cache->set('expensiveDataset', $dataset);
}
echo $dataset; //do something with the data
有一些库可以帮助对象,函数和页面级缓存。 Zend Framework's Zend_Cache组件是值得深思的,如果你喜欢你所看到的,那就是一个很好的实现。
答案 3 :(得分:0)
实际上有几种不同形式的缓存。您所指的内容由eAccelerator,MMCache等软件包处理。
虽然这会有所帮助,但实际上可以提升性能的是实际缓存HTML输出(如果适用),或缓存数据库结果集以进行重复查询(类似memcache)。
安装任何操作码缓存机制非常简单,但我引用的其他两个缓存区域将为您带来更大的性能优势。