【问题标题】:Efficient PHP Caching Strategy? [duplicate]高效的 PHP 缓存策略? [复制]
【发布时间】: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 非常正确。只估计你无法测量的东西等等。 :-)
  • 我在发布我的问题之前确实阅读了这篇文章,但它有点笼统,我想我必须分析我的应用程序,因为没有关于性能的“单一方法”并从那里开始。

标签: php mysql caching


【解决方案1】:

我认为你所做的一切都很好。在几乎所有情况下,从缓存中检索都使用较少的资源,而不是每次都进行查询。

但是,我不会尝试“合并”添加的图像,只需再次调用数据库即可。只需在相册修改时增加缓存。我不认为在修改专辑时编辑缓存是正确的方法。数据库擅长存储和构建数据,因此很容易检索。为什么要自己建?

【讨论】:

  • 我真的介于你的答案和迈克的答案之间,我正在努力寻找该怎么做。我也相信你,但是当我的朋友看到​​我在做什么时,他发现我花了这么多时间来创建包含这么多细节的 DataManager 很疯狂,就像 Mike 说的那样,他准确地告诉我“你有 2 个 MySQL现在,为什么?你甚至通过数组对数据进行分页,这太疯狂了!"
猜你喜欢
  • 1970-01-01
  • 2015-07-21
  • 2013-02-25
  • 2021-11-10
  • 2010-10-06
  • 2020-08-23
  • 2022-08-08
  • 2010-10-26
  • 1970-01-01
相关资源
最近更新 更多