我正在开发一个网上商店类型的应用程序。我经常在其他网站上看到的一个功能是过滤选项的细分,然后是过滤选项总共有多少结果。您经常在计算机网站(例如 Newegg)或二手车网站上看到这一点。例子:
CPU:
* AMD (315)
* Intel (455)
Video card:
* ATI (378)
* Nvidia (402)
我怎样才能有效地计算这些总数?我工作的网站将有许多不同的产品(10.000+),有许多不同的选项。更糟糕的是,产品在不断变化。
试图预先计算所有不同的过滤组合总数似乎是不可行的。如果我有 5 个不同的过滤器,每个过滤器有 4 个选项,则选项可能性的数量为20 * 16 * 12 * 8 * 4 = 122880
. 这需要很长时间才能计算出来。
另一种选择是按需查询并缓存结果(例如在 Redis 中)。但是,如果产品不断被添加和删除,我如何有效地管理缓存呢?缓存通常是陈旧的。恐怕我不得不以某种方式对缓存失效进行微观管理,从而导致实现非常复杂和脆弱。另一种方法是使缓存的广泛部分无效。但是在失效后,我的数据库将被来自需要重新计算这些总数的活跃用户的数百个查询所冲刷。
有没有一种优雅而优雅的方式来处理这个问题?