PHP ob_start vs opcode APC,解释差异和现实世界的用法?

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中).

  1. APC是否曾经安装在服务器上的模块,现有的 PHP代码运行速度更快,无需修改

    APC是自动的吗?

  2. 那么,为什么有这样的功能apc_add呢?

    我们如何使用APC缓存整个页面?

  3. 当安装APC,我仍然需要我的一部分的任何缓存?

  4. 如果APC要为托管服务提供商节省资金,他们为什么不安装它呢?(我的意思是他们应该竞相安装它,但我不认为这种情况发生了.)

    安装APC对这些托管服务提供商有缺点吗?

Bur*_*lid 3

APC 是一个操作码缓存:

替代 PHP 缓存 (APC) 是一个免费且开放的 PHP 操作码缓存。其目标是提供一个免费、开放且健壮的框架来缓存和优化 PHP 中间代码。

这与模板缓存(您正在演示的)不同,并且它对输出缓冲影响很小。这不是同一件事。

操作码缓存意味着在解释后缓存 PHP 代码。这可以是任何代码片段(不一定是输出 HTML 的内容)。例如,您可以将类和模板引擎本身保存在操作码缓存中。这将极大地加快您的代码速度,因为 PHP 解释器不需要再次“解释”您的代码,它只需从缓存中加载“解释”版本即可。

请不要将输出缓冲与缓存混淆。缓存有很多级别,例如,您可能熟悉的最常见的两个级别。

缓存会话

一个非常基本的版本是存储一些设置的 cookie。您仅执行一次“计算”设置的代码(当用户登录时),并且对于会话的其余部分,您使用 cookie 中的“缓存”设置。

缓存渲染的模板

当页面需要生成一次但不经常更改时,可以执行此操作。例如“每日特价”页面,它是一个模板。您只需生成一次,然后从缓存中提供“渲染”页面。

这些都不使用APC

  • @Marco是的,这只是一个已经转换成操作码的PHP文件。这就是为什么它被称为操作码缓存。我有一种感觉,您以非常严格的方式使用“缓存”术语,将其含义限制为“渲染的 HTML”,而该术语的用途更广泛。 (2认同)