仅缓存PHP中常用的数据

仅缓存PHP中常用的数据,php,mysql,caching,xcache,Php,Mysql,Caching,Xcache,我有一个新闻网站,每天收到大约58000次点击,36000篇文章。在这36000篇独特的故事中,30000篇只获得1次点击(其中大部分是搜索引擎爬虫),只有250篇故事获得20次以上的印象。缓存任何东西都是浪费内存,但这250篇文章除外 目前我使用MySQL查询缓存和xcache进行数据缓存。表每5-10分钟更新一次,因此仅查询缓存并没有多大用处。如何单独检测频繁访问的页面并缓存数据?您只能缓存新文章(比如最近添加的文章)。我建议看一看和-它们都非常有用、简单,同时也是功能强大的缓存引擎。我认为

我有一个新闻网站,每天收到大约58000次点击,36000篇文章。在这36000篇独特的故事中,30000篇只获得1次点击(其中大部分是搜索引擎爬虫),只有250篇故事获得20次以上的印象。缓存任何东西都是浪费内存,但这250篇文章除外


目前我使用MySQL查询缓存和xcache进行数据缓存。表每5-10分钟更新一次,因此仅查询缓存并没有多大用处。如何单独检测频繁访问的页面并缓存数据?

您只能缓存新文章(比如最近添加的文章)。我建议看一看和-它们都非常有用、简单,同时也是功能强大的缓存引擎。

我认为您可以从两个选项开始:

  • 默认情况下不缓存任何内容。

    您可以使用观察者/可观察模式实现一种方法,在文章的视图达到阈值时触发事件,并开始缓存页面

  • 在创建时缓存每一篇文章

  • 在这两种情况下,您都可以使用cron清除未达到定义阈值的项目

    在任何情况下,您都可能需要使用任何启发式方法来提前确定是否需要缓存您的文章,并且与任何启发式方法一样,您将获得假阳性,反之亦然

    这将取决于你的内容是如何阅读的,如果文章是实时新闻,它可能会很有效,因为它会迅速产生高流量


    这些方法的主要问题是,您需要存储额外的信息,如上次访问日期时间及其当前页面视图,这可能会导致额外的查询。

    内存浪费真的是一个问题吗?每个故事有多大?一个序列化的行大约有2000到5000个字符长。没有那么多,存储很便宜。您可能会花更多的钱来寻找解决方案,而不是购买更多的内存。然而,如果数据只是纯文本,为什么不压缩它呢?@Boris-我有足够的空闲内存,在不久的将来没有机会得到OOM。我想知道是否有一个合理的解决方案。检查创建日期是一个好主意。这可以大大减少文章的数量。据我所知,由于我没有使用高级功能,xcache比memcached和Redis快得多。