我正在寻找使用php的中小型网站的HTML /文本内容缓存。我将主要保存网站的动态导航菜单,从DB等生成的HTML报告。主要是我正在寻找基于会话的缓存(这是一个坏主意吗?)。它也可以是基于文件的。
非常感谢任何现有的解决方案。例如,Zend Framework以其松散耦合的组件而闻名。因此,Zend_Cache可以是候选者,但无法找到基于会话的缓存适配器。而且,它不是完全独立的组成部分。任何人都可以告诉我使用Zend_Cache需要采用哪些类?
另一种选择是PEAR - Cache_Lite,你对此有什么看法?
是否还有其他框架,我可以轻松地将缓存组件分开并以较少的学习曲线使用它?
感谢。
答案 0 :(得分:2)
Memcached浮现在脑海中,作为一种非常轻巧高效的解决方案。
但您也可以在简单文件中缓存内容。文件系统通常很快,并且处理读/写锁没有问题。并且不需要任何花哨的库来处理...函数filemtime,file_put_contents和file_get_contents就是您所需要的。
编辑:我会在几个月前添加一个指向该帖子的链接:Best Solution for caching。这不完全是主题,但它可能会帮助你的研究:)
答案 1 :(得分:1)
基于会话的缓存可能不是一个好主意。它仅适用于需要为每个用户缓存特定结果的有限情况(不适用于所有人)。
APC的部署非常广泛,所以如果你有权访问它,我会在后端查看带有APC的Zend_Cache。如果APC不可用,后端带有平面文件的Zend_Cache应该足够用于中小型网站
答案 2 :(得分:1)
JPCache是一个不错的轻量级缓存库。
答案 3 :(得分:0)
您可以查看CakePHP中的缓存。我怀疑你是否能够将它与框架工作分开,但它应该可以帮助你理解如何缓存动态内容。
答案 4 :(得分:0)
大多数php缓存库都是使用output buffer control functions实现的。 您可以用同样的方式实现自己非常简单的缓存。
<?php
function callback($buffer)
{
// Code to store output in cache
}
if (/* Test cached copy is still valid */) {
/* Output cached copy to browser */
exit(0);
}
ob_start("callback");
?>
<html>...</html>
<?php
ob_end_flush();
?>
如果您愿意,可以省略ob_end_flush()
,因为它会在输出结束时自动触发。
有趣的是,这个结构可以包裹在比页面更小的单元周围。例如,您只提到了导航菜单的缓存。你需要在块周围加一些逻辑来缓存,但原理是一样的。