首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何缓存IQueryable结果进行分页

如何缓存IQueryable结果进行分页
EN

Stack Overflow用户
提问于 2015-05-20 11:33:17
回答 1查看 258关注 0票数 0

如果每个调用都需要计算很多事情并将其返回给客户端,那么缓存Queryable结果的最佳方法是什么。

码样例

代码语言:javascript
复制
 [Queryable]
 public IQueryable<Car> Get()
 {
    try
    {
    var result=GetCarList();
    //GetCarList() calculation is  taking  around 1 min

    return result.AsQueryable();
    } 
 }

GetCarList()
{
var query = from car in db.CarDetail
            where car.color == "white"
            select car;

//10k records of white cars are selected with out considering makers 
//white is mandatory
foreach (var car in query)
{
  //Processing each record in every call
}
}

查询示例

第一页

代码语言:javascript
复制
localhost/api/Car?$filter=(make eq 'ford')&$orderby=carid desc&$top=10

第二页

代码语言:javascript
复制
localhost/api/Car?$filter=(make eq 'ford')&$orderby=carid desc&$top=10$skip=10

第三页

代码语言:javascript
复制
localhost/api/Car?$filter=(make eq 'ford')&$orderby=carid desc&$top=10$skip=20

每次调用都要花费1分钟,尽管当前滤波器的计算是相同的。缓存这种api调用的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-05-20 12:04:30

正如OP在他的注释中解释的那样,要缓存的对象是调用GetCarList();返回的列表,结果总是相同的。

您只需将其存储在缓存中,请参阅docs:缓存类

当您需要它时,检查它是否在缓存中。如果没有,请在使用之前创建它并存储在缓存中(您想使用它的任何地方)。由于Cache是线程安全的,通过从不同的请求访问它,您将不会有一致的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30348462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档