文档提供了以下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和“前缀”键。文档在缓存区域中有一些不足之处。
答案 0 :(得分:5)
你的方式更简单,但是他们的方式更灵活,例如使用$cache->save
代替apc_store
你可以快速从使用apc交换到另一个缓存系统,文件,memcached等,通过在一个文件中更改一行或两行代码,而不是通过整个应用程序进行查找和替换。
在您当前的项目中可能并不重要,但如果您在不同的服务器上处理各种不同的项目,它可能会有很大的不同。通过使用抽象,您可以按原样重用代码,即使缓存后端不同。
答案 1 :(得分:2)
您通常不只是想存储“一个值”。您更可能希望在Web应用程序中缓存结果,该结果是在抽象OOP代码的特定层中创建的。
因此缓存本身可以在OOP中进行抽象,并且通常适用于其余代码也是良好的OOP。这就是你所看到的。
更具体一点:
缓存行为通常涉及两个组成部分:
后端处理与存储引擎的对话。这是您的简单函数实际存储值的地方。
前端允许抽象真正存储哪些数据。您可以简单地缓存值,您可能希望缓存数据库结果,您可能希望缓存对类方法的调用。所有这些应该对您的应用程序透明,也可能对您的代码透明。但手工处理数据通常没有多大意义。这就是所实施的前端的目的。
我从Phalcon文档中了解到,没有太多的前端实现,但是有一个接口。所以使用它的方法是检查你想要缓存什么类型的东西,然后实现这个东西的装饰模式,它也实现了这个接口。
我无法详细说明,因为我对Phalcon本身没有任何经验。
答案 2 :(得分:1)
除了Sven的回答之外,前端还用于定义数据的来源(由开发人员,输出缓冲区等明确定义),以及在将数据存储到后端之前必须如何处理数据。从后端获取它们之后。您可能希望序列化数据或使用转换器(如base64 / json),以独立的方式存储数据。