【发布时间】:2013-08-05 05:08:22
【问题描述】:
我是应用程序开发的新手。我目前正在开发一个应用程序,我想知道您对我作为新手所面临的问题的宝贵意见。
在缓存方面,我应该将应用程序的哪些部分添加到缓存中?让我举个例子说明我在做什么:
我正在为我的用户开发一个图片共享应用程序,并且我创建了一个缓存机制来缓存每个用户的数据、他的相册和他的图片。我目前每页有 1 个查询(仅在它尚未存储在缓存中的情况下)例如:
if ( !$ItemNotInCache )
{
$MyData = $DB->Query('blah');
Cache::CacheIt($MyData);
}
这是关于我得到的每一个结果,我尽量不要在每次用户请求页面时调用太多查询,这是否有效?问题是,正如你所理解的,我必须构建这个巨大的机制来操作数组中的所有这些数据,等等。
当用户从数据库中删除图像时,我也必须从他相册的缓存数据中删除索引。
当用户将图像添加到数据库时,我使用 array_merge 将此项插入到他的缓存数据中等等。
我的一个朋友告诉我,我不应该滥用缓存,因为我的数据是动态的,并且会经常变化,他还告诉我这就是 MySQL 的用途。我的问题是我应该以这种方式使用缓存吗?如您所知,数据是动态的,应该经常刷新。这是高效还是我应该坚持使用 MySQL 查询?
【问题讨论】:
-
MySQL 实现了自己的重要缓存 - 如果您正在缓存查询结果,那么您将加倍缓存。你的朋友可能是对的。 “可能”是因为每个系统都不同,这里没有足够的信息。确实,您需要分析您的应用程序并处理对性能影响最大的领域
-
@MikeW 是的,但仍然存在数据库调用/数据传输的开销,这在高流量站点上可能会很重要。这也假设 MySQL 有足够的内存等。
-
@middaparka 对于低流量站点,努力可能超过收益。我们无法从他在这里发布的内容中看出。正如我所说 - OP 需要分析他的应用程序。
-
@MikeW 非常正确。只估计你无法测量的东西等等。 :-)
-
我在发布我的问题之前确实阅读了这篇文章,但它有点笼统,我想我必须分析我的应用程序,因为没有关于性能的“单一方法”并从那里开始。