按需加载缓存



我们的系统内有一个社交网络,我们已经实现了一个时间线来向用户显示他们可以看到的内容(来自其他用户和他所属社区的帖子(。鉴于我们在数据库中有一些linq-to-sql查询,它工作正常,用户可以执行诸如对帖子的评论喜欢帖子之类的操作。我们在javascript上还有一个间隔计时器,它请求对时间线进行一些更新(让用户看到新帖子等(。时间线被制作为无限滚动加载 10 x 10(根据用户可以看到的内容(。

我们希望提高此方法的性能,我们正在考虑如何缓存时间线。主要问题是我们有很多posts(超过 10000 条带有评论和喜欢(,缓存整个post表不是一个好主意。我们已经对其进行了测试,但性能不佳,因为我们的缓存很大,并且使用 linq(在内存中(处理页面的速度很慢。

有没有办法如何按需求和基于用户加载缓存?还是有其他选择。

我们可以使用 Redis 或 .Net MemoryCache 实现。

谢谢。

没有人会滚动浏览整个历史记录,无需将所有内容加载到缓存中。

每次用户请求新页面时,如果它不在缓存中,请加载它,并将接下来的 10 个项目加载到缓存中。这样,第一个请求是唯一一个对每个用户来说可能很慢的请求。

还要在每个页面上设置到期日期,如果没有人在 X 个时间单位请求它,请将其从缓存中删除。

请注意,创建新项目后,必须对页面进行重新排序(第一页中最早的条目必须移动到第二页等(。(或者只是将所有内容保留在一个列表中,但使用在位置 0 插入某些内容时不会强制移动项目的列表实现(

最新更新