2011-05-03 55 views
-1

我要寻找一个DB缓存系统与我可以通过数据库表名称缓存我的查询缓存查询。我现在使用CI 1.7.2和mySQL for DB。寻找一个DB缓存系统CodeIgnitor它通过数据库表

我知道CI有一个内置的数据库缓存系统,但问题是,它由控制器/方法名称缓存查询。我有一个在线软件,预计每天会有大量的热门游戏。所以我不能依赖于控制器/方法命名,因为当更新查询时,我不可能通过控制器/方法命名来删除那些与查询相关的缓存。而且我也无法删除所有的缓存,因为如果是这样,就不需要使用缓存系统。

请帮我在这个问题上。如果几乎不可能,那么请给我建议任何其他最好的方式来服务我的目的。

在此先感谢。

回答

0

您可以使用MP_Cache,将解决你的问题,我强烈相信。这是MP_Cache的User Guide。它与CodeIgniter兼容,你可以缓存你的模型,甚至是你的库,你可以通过你自己设置缓存名称。

+0

太棒了!这正是我所期待的。谢谢您的帮助。 – Tareq 2011-05-03 19:07:05

0
+0

能否请您解释关于如何安装和笨,我的Web服务器上使用这些缓存系统。 – Tareq 2011-05-03 17:46:56

+0

请检查我的答案中的memcache链接。它有非常好的文档。您也可以浏览:http://blogs.vinuthomas.com/2006/02/06/memcached-with-php/了解快速教程。 – anubhava 2011-05-03 17:54:57

+0

很抱歉,我没有在您的链接中找到有关如何在我的WEB服务器中安装memcache的任何有用信息,这不是我的本地版本apache服务器,以及如何在CodeIgniter中使用此信息。如果您在项目中使用它,请分步指导。 – Tareq 2011-05-03 18:10:15

2

另一种选择和一个我认为一般应在缓存搞乱受审CI-是在MySQL查询缓存。

添加以下的/etc/my.cnf(或您的具体位置)的的[mysqld]部分,然后重启mysqld:

query_cache_type=1 
query_cache_size = 20M 

这将默认启用查询缓存,具有缓存大小20 Megs,您可以调整以满足您的需求。启用在控制器的CI输出探查看到结果查询时间(每个查询的第二次执行):

$this->output->enable_profiler(TRUE); 

如果您需要进一步减少控制器的执行时间,那么我会建议在寻找一个解决方案像MP_Cache或APC都已经被推荐。

+0

感谢您的建议。我对如何在Live WEB服务器中添加这些行感到困惑,因为我对服务器的控制有限,而且无法编辑** my.cnf **文件的特权? – Tareq 2011-05-04 15:07:55