asp.net - Viewstate in a .ashx Handler? -
i've got handler (list.ashx example) has method retrieves large dataset, grabs records shown on given "page" of data. allowing users sorting on these results. so, on given page run, retrieving dataset got few seconds/minutes ago, reordering them, or showing next page of data, etc.
my point dataset hasn't changed. normally, dataset stuck viewstate of page, since i'm using handler, don't have convenience. @ least don't think so.
so, common way store viewstate associated current user's given page when using handler? there way take dataset, encode somehow , send user, , on next call, pass , rehydrate dataset bits?
i don't think session place store since might have 1000 users viewing different datasets of different data, , bring server knees. @ least think so.
does have experience kind of situation, , can give me advice?
in situation use cache type of user , query info key. reason being large dataset. right there don't want pushing , down pipe constantly. remember server still has received data if in viewstate , handle it. cache specific user , have short expiry:
public dataset getsomedata(string user, string query, string sort) { // make key based on query params figured // want user in there well. // user user if want limit 1 cached item // per user too. string key = string.format("{0}:{1}", user, query); dataset ds = httpcontext.current.cache[key] dataset; if (ds == null) { // need reload or data ds = loadmydata(query); // store , make expiry short doesn't bog server // needlessly... worst case have retrieve again because data // has expired. httpcontext.current.cache.insert(key, ds, null, datetime.utcnow.addminutes(yourtimeout), system.web.caching.cache.noslidingexpiration); } // perform sort or leave default sorting , return return (string.isnullorempty(sort) ? ds : sortsortmydataset(ds, sort)); }
when 1000's of users, mean concurrent users? if expiration time 1 minute how many concurrent users make call in minute , require sorting. think offloading data similar viewstate
trading cache memory bandwidth , processing load of larget requests , forth. less have transmit , forth better in opinion.
Comments
Post a Comment