我想知道如何缓存动态PHP页面。是否真的需要预编译PHP代码并将其存储在字节码中?类似于Python的.pyc,它是一个更加编译和准备好执行的版本,所以如果系统发现.pyc文件比.py文件更新,那么它就不会费心去重新编译为.py文件。有人可以解释一点关于缓存动态PHP页面吗?
那么PHP主要是关于这个缓存吗?有人可以提供更多关于此的信息吗?
我想知道如何缓存动态PHP页面。是否真的需要预编译PHP代码并将其存储在字节码中?类似于Python的.pyc,它是一个更加编译和准备好执行的版本,所以如果系统发现.pyc文件比.py文件更新,那么它就不会费心去重新编译为.py文件。有人可以解释一点关于缓存动态PHP页面吗?
那么PHP主要是关于这个缓存吗?有人可以提供更多关于此的信息吗?
取决于您所说的缓存类型。操作码缓存的确如你所说。它采用操作码并对其进行缓存,以便每当用户访问特定页面时,如果该页面的操作码已经编译并存储在缓存中,则该页面不需要重新编译。如果你修改一个php文件,缓存机制将检测到这个并重新编译代码并将其放入缓存中。
如果你正在谈论缓存页面上的数据本身,这是完全不同的东西。
有关操作码高速缓存的更多信息,请参阅Alternative PHP Cache。
你所描述的是一个PHP accelerator他们完全按照你所说的去做;存储缓存的,编译的字节码,以便同一脚本的多次执行只需要一次编译。
也可以缓存执行PHP脚本的结果。这通常需要至少一点逻辑,因为页面的内容可能在缓存后发生了变化。例如,你可以看看general cache feature provided by CodeIgniter。
实际上有几种不同的缓存形式。你所指的是通过如eAccelerator,MMCache等包来处理。
虽然这将有助于一些你真的会得到性能提升的地方,实际上是在适当的时候缓存HTML输出,或者在缓存数据库结果集用于重复查询(类似memcache)。
安装任何操作码缓存机制都非常简单,但我引用的其他两个缓存区域将为您带来更大的性能优势。
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如果你喜欢你所看到的东西,组件就是思想和伟大的实现。
因此,如果我在我的命令提示符上运行PHP程序,我可以问预编译的版本是否会生成,因此下次不需要编译? – 2009-05-19 17:03:11