使缓存网站的计数器保持最新

Keep counters up to date for a cached website

我们的网站有显示在文章缩略图上的浏览量、评论和喜欢的计数器。这些缩略图被缓存,然后在不同的地方使用,通常是缓存自己。问题是随着计数器的增加,所有这些不同的缓存片段很快就会过时。结果是显示相同文章的不同页面将显示具有不同值的计数器。

该站点是在 RoR 4.2.1 中制作的,缓存是通过 Memcached 完成的。

在保持更新内容的同时最大化缓存以获得最佳性能的最佳方法是什么?

有多种方法可以做到这一点,而这一切都归结为您需要多少优化:

  1. 加载缓存页面后,在单独的 AJAX 调用中获取页面浏览量计数。此解决方案应与您当前的设计高度兼容。

  2. 缓存部分页面而不是整个页面。这意味着您将拥有除页面浏览量之外的所有部分的缓存副本,因此您可能需要对代码进行重大更改。

  3. 如果请求太高,你也可以写一个近似函数(在js中),它根据过去的浏览量告诉你估计的浏览量,可以显示给最终用户。基础数据可以每分钟(或自定义频率)刷新。