From: Ian B. <ia...@co...> - 2003-11-05 22:49:16
|
On Nov 5, 2003, at 4:22 PM, Ian Sparks wrote: > I have a form that gets posted back to the same URL time and time > again as the user refines a list of records on that form by adding > "filters". > > Filters boil down to additions to a SQL WHERE clause. > > The options for saving these filters between posts appear to be : > > * Client Cookie. > * Form fields for each filter > * Session store keyed from hidden form field > * VIEWSTATE hidden form which contains pickled, Base64d and "signed" > filters. > > Of the options I prefer the session idea because it avoids sending > more data down to the client but how will I clear these up and when? A > user session could get large fast...unless I pickle to a file/database > and put the id of that file/record in the hidden field? Sessions are pickled to the disk as they get older, so it's not too bad. Of course you end up loading in *all* their past searches, which isn't so hot. Cookies are unreliable and highly limited. Beyond the session ID I wouldn't advise putting anything in cookies. I think the hidden field would probably be best. It's not that hard to implement, and it allows you to do (server-side) stateless searches. Unfortunately you'll probably find it hard to keep those in GET variables because of the potential length, so you lose the benefit of the back button anyway. So then we're back at your session idea, so I take that back, sessions are the best. You could implement your own expiration on these sub-sessions. Add a loadFieldState (or something) method to your class, which loads the session and looks through all the old states to expire old field states, then returns the field state that the client asked for (well, other way around, so you don't expire something just before you try to retrieve it). Friendly expiration might be based on some expiration point -- like everytime they actually do something with their query, expire all the old queries. Or expire queries that are more than 30 minutes old, *and* are not in the ten newest queries (so that if they walk away from their computer they can come back and not totally lose their place). -- Ian Bicking | ia...@co... | http://blog.ianbicking.org |