Mar*_*aio 7 php caching apc ob-start
前提:我不是要重新发明轮子,我只是想了解一下.
输出缓存可以轻松实现:
//GetFromMyCache returns the page if it finds the file otherwise returns FALSE
if( ($page = GetFromMyCache($page_id)) !== FALSE )
{
echo $page; //sending out page from cache
exit();
}
//since we reach this point in code, it means page was not in cache
ob_start(); //let's start caching
//we process the page getting data from DB
//saving processed page in cache and flushing it out
echo CachePageAndFlush(ob_get_contents());
Run Code Online (Sandbox Code Playgroud)
但接下来是APC (默认情况下将包含在PHP6中).
APC是否曾经安装在服务器上的模块,现有的 PHP代码运行速度更快,无需修改?
APC是自动的吗?
那么,为什么有这样的功能apc_add呢?
我们如何使用APC缓存整个页面?
当安装APC,我仍然需要做我的一部分的任何缓存?
如果APC要为托管服务提供商节省资金,他们为什么不安装它呢?(我的意思是他们应该竞相安装它,但我不认为这种情况发生了.)
安装APC对这些托管服务提供商有缺点吗?
APC 是一个操作码缓存:
替代 PHP 缓存 (APC) 是一个免费且开放的 PHP 操作码缓存。其目标是提供一个免费、开放且健壮的框架来缓存和优化 PHP 中间代码。
这与模板缓存(您正在演示的)不同,并且它对输出缓冲影响很小。这不是同一件事。
操作码缓存意味着在解释后缓存 PHP 代码。这可以是任何代码片段(不一定是输出 HTML 的内容)。例如,您可以将类和模板引擎本身保存在操作码缓存中。这将极大地加快您的代码速度,因为 PHP 解释器不需要再次“解释”您的代码,它只需从缓存中加载“解释”版本即可。
请不要将输出缓冲与缓存混淆。缓存有很多级别,例如,您可能熟悉的最常见的两个级别。
一个非常基本的版本是存储一些设置的 cookie。您仅执行一次“计算”设置的代码(当用户登录时),并且对于会话的其余部分,您使用 cookie 中的“缓存”设置。
当页面需要生成一次但不经常更改时,可以执行此操作。例如“每日特价”页面,它是一个模板。您只需生成一次,然后从缓存中提供“渲染”页面。
这些都不使用APC