Here is a great idea sent to me personally from a List Member that I
wanted to post for everyone to see.

 

QUOTE:

 

One thought that you may want to consider is caching x number of values
at a time.  When the item changes, check the cache FIRST(in a hash based
on the index number as the key),  and only if you do not find the cached
data, then do the DB lookup.   I would do something like:

 

load listview and cache x number of values, 1->x (20 may be a good
number)

when an item is clicked, check the cache first for existence of the
index clicked on

if it is in the cache, show the data from the cache 

else run your query to load x number of records into the cache either
clearing or keeping all the existing data, depending on your expected
number of items total.  This depends on memory,etc. Obviously, if you
will have thousands of items in the listview, you may not want to keep
all the data in memory for performance reasons.  

 

This a) keeps memory footprint small, and b) gives quick response in
"most" cases, c) reduces total database round trips.  I would suggest
using a temp variable to hold the NEW version of the cache until after
your DB query lookup has returned.  This way, if the user clicks on an
item, the item is not in the cache AND the DB look up fails, you still
have all the existing cached data and can have the user try again
without losing the current cached values.   

 

In General, if you or your users would access items sequentially in
"most" cases, you could also set up seperate thread to purge/load the
cache in the background., say  current index -20 through index +20   

 

Just a thought...

 

END QUOTE 

 

Reply via email to