0

文档提供了以下 APC 缓存方法:

//Cache data for 2 days
$frontCache = new Phalcon\Cache\Frontend\Data(array(
    'lifetime' => 172800
));

  $cache = new Phalcon\Cache\Backend\Apc($frontCache, array(
      'prefix' => 'app-data'
  ));

//Cache arbitrary data
$cache->save('my-data', array(1, 2, 3, 4, 5));

//Get data
$data = $cache->get('my-data');

与简单地做的超级简单方法相反,这似乎过于复杂

apc_store('my-data', array(1, 2, 3, 4, 5), 172800);
apc_fetch('my-data');

请澄清 frontCache 和“前缀”键。文档在缓存区域有一些不足之处。

4

3 回答 3

5

您是正确的,您的方式更简单,但他们的方式更灵活,例如,通过使用$cache->save而不是apc_store您可以通过更改一个文件中的一两行代码来快速从使用 apc 切换到另一个缓存系统、文件、memcached 等,而不是而不是通过整个应用程序进行查找和替换。

它在您当前的项目中可能并不重要,但如果您在不同的服务器上处理各种不同的项目,它可能会产生很大的不同。通过使用抽象,即使缓存后端不同,您也可以按原样重用代码。

于 2013-05-06T11:43:32.760 回答
2

您通常不只是想存储“一个值”。您更可能希望在 Web 应用程序中缓存结果,该结果是在抽象 OOP 代码的某个层中创建的。

所以缓存本身可以在 OOP 中抽象出来,它通常适合其余代码也是好的 OOP 时。这就是你所看到的。

更加具体:

缓存的行为通常涉及两个组件:

  1. 前端。这可以是关于要缓存的任何内容。
  2. 后端。这是缓存存储,例如 APC、Memcached 或简单文件。

后端处理与存储引擎的对话。这是您的简单函数实际存储值的地方。

前端允许抽象出真正存储的数据。您可以简单地缓存值,您可能想要缓存数据库结果,您可能想要缓存对类的方法的调用。所有这些都应该对您的应用程序透明,并且可能对您的代码也是透明的。但手动处理数据通常意义不大。这就是实现的前端的用途。

我从 Phalcon 文档中了解到,没有太多前端实现,但有一个接口。所以使用它的方法是检查你要缓存什么样的东西,然后实现这个东西的装饰器模式,它也实现了这个接口。

我无法详细说明,因为我对 Phalcon 本身没有任何经验。

于 2013-04-28T19:14:20.470 回答
1

除了 Sven 的回答之外,前端旨在定义数据的来源(由开发人员明确定义,来自输出缓冲区等),以及在将数据存储到后端之前和获取它们之后必须如何处理数据从后端。您可能希望以独立于数据存储方式的方式序列化数据或使用 base64/json 等转换器。

于 2013-04-29T02:49:02.877 回答