• We use a variety of content management systems and the approach that they take is to cache the results of a query in their own internal cache.

    Another approach that we use where site performance is at a premium is to have a nightly process that produces hard-coded html for stuff like drop down boxes, left hand navigation etc.

    In some cases the update has to give the illussion of being dynamic so we detect the file creation time of the html component and if this is earlier than the last update time in the database we regenerate the html component file.

    I am not a big fan of application or session variables (session variables in particular) because in IIS they rely on the user browser allowing a cookie. 

    In the case of session variables they add a constraint as to the number of simultaneous users you can have on the site at once.

    Still, its horses for courses and 10 points if it works and 0.1 point if it works elegantly.  If you're presenting to a marketing type, several million points if it is the correct shade of pink.