我有一个www.zipstory.com(测试版)的情况,其中有来自同一数据库的订阅源的n个排列。例如,某人可以为他们感兴趣的任何城市获取饲料,并且将这些城市中的许多城市都集中在一起,以便按最近或最多的投票排序。用户过滤结果的服务器端缓存策略
我应该如何缓存每个用户的东西,而同时又有成千上万的用户没有完全清空可用内存?
我唯一的猜测就是不要。我可以想出一个客户端缓存策略,在这里我可以对城市结果进行分类,但这种方式我仍然可以缓存城市中的所有策略。
你有什么建议?我现在处于陌生的境地,可以使用一个好的策略。我注意到这个网站并没有这样做,但Facebook做到了。他们必须从缓存的用户提要池中提取数据并在客户端采集它们。不知道,我还没有足够的智慧来解决这个问题。
换句话说......
每个城市都有自己的饲料。每个用户都有一个城市饲料组合n置换。
我想使用C#和ASP.NET
添加到这个Febuary 28日看到这个问题可能的解决方案,2013年这里是根据您的意见,以便THANKS!...
我做了什么- 对于每一个用户登录时,我缓存他们的首选城市名单
- 前10后结果每个城市缓存并存储在基于LINQ对象
- 当一个用户进来并有x个城市作为提要,我浏览他们的城市列表循环,然后检查城市发布是否在缓存中,如果没有,我从数据库中获得,然后将个别发布的html与其他排序元素一起填充到缓存中。
- 我重组城市名单成为一个进用户,因为我有LINQ对象的一些排序的元素,我可以以适当的顺序求助于他们,并回馈给用户
这并不意味着每次都有一些CPU工作,无论我需要将城市列表合并到一个城市列表中,但这样可以避免每次都进入数据库,并且每个人都可以在更快的页面响应时间中获益。主要缺点是因为我之前没有在城市做单个查询UNION,所以如果每个城市没有被缓存但是每个城市被检查是否被单独缓存,那么每个城市需要单个查询,因此每10个城市的10个查询只会发生在该网站是一个死亡区。
不知道我明白。但是,不应该为每个开发者缓存,而是针对每个“过滤器”缓存?如果两个用户具有相同的“过滤器”,他们共享缓存。就像OutputCache(VaryByParam = filter) –
抱歉不要混淆。每个用户都有自己的城市Feed排列。每个城市都有自己的饲料。 –
@dash多彩的评论有时是适当的,可以增加一个娱乐价值,否则干燥的论坛提供了高雅的工作。否则,我不认为有理由将其删除。 –