加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在.ashx处理程序中查看状态?

发布时间:2020-12-16 06:43:08 所属栏目:asp.Net 来源:网络整理
导读:我有一个处理程序(例如list.ashx),它有一个检索大数据集的方法,然后只抓取将在任何给定的“页面”数据上显示的记录.我们允许用户对这些结果进行排序.因此,在任何给定的页面运行中,我将检索我几秒钟/几分钟前刚刚获得的数据集,但是重新排序它们,或显示下一页
我有一个处理程序(例如list.ashx),它有一个检索大数据集的方法,然后只抓取将在任何给定的“页面”数据上显示的记录.我们允许用户对这些结果进行排序.因此,在任何给定的页面运行中,我将检索我几秒钟/几分钟前刚刚获得的数据集,但是重新排序它们,或显示下一页数据等.

我的观点是我的数据集确实没有改变.通常,数据集会粘在页面的视图状态中,但由于我使用的是处理程序,因此我没有那么方便.至少我不这么认为.

那么,在使用处理程序时,存储与当前用户的给定页面关联的视图状态的常用方法是什么?有没有办法获取数据集,以某种方式对其进行编码并将其发送回用户,然后在下一次调用时,将其传回,然后从这些位重新水化数据集?

我认为Session不是一个存储它的好地方,因为我们可能有1000个用户都在查看不同数据的不同数据集,这可能会使服务器陷入困境.至少我是这么认为的.

有没有人有这种情况的经验,你能给我任何建议吗?

解决方法

在这种情况下,我将使用具有某种类型的用户和查询信息的缓存作为密钥.原因是你说它是一个大型数据集.对,有些东西你不想一直在管道上下推动.请记住,如果数据在ViewState中并且处理它,您的服务器仍然必须接收数据.我会做这样的事情,它会为特定用户缓存它并且有一个短期到期:

public DataSet GetSomeData(string user,string query,string sort)
{
    // You could make the key just based on the query params but figured
    // you would want the user in there as well.
    // You could user just the user if you want to limit it to one cached item
    // per user too.
    string key = string.Format("{0}:{1}",user,query);

    DataSet ds = HttpContext.Current.Cache[key] as DataSet;
    if (ds == null)
    {
        // Need to reload or get the data
        ds = LoadMyData(query);

        // Now store it and make the expiry short so it doesn't bog up your server
        // needlessly... worst case you have to retrieve it again because the data
        // has expired.
        HttpContext.Current.Cache.Insert(key,ds,null,DateTime.UtcNow.AddMinutes(yourTimeout),System.Web.Caching.Cache.NoSlidingExpiration);
    }

    // Perform the sort or leave as default sorting and return
    return (string.IsNullOrEmpty(sort) ? ds : sortSortMyDataSet(ds,sort));
}

当你说1000个用户时,这是否意味着并发用户?如果您的到期时间是1分钟,那么有多少并发用户会在一分钟内拨打该电话并需要排序.我认为将数据卸载到类似于ViewState的东西只是交换一些缓存内存以获得带宽和来回处理大量请求的负载.在我看来,你来回传递的越少越好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读