When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips

Sections:
Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
XML Info
Information:
Feedback
Author an Article
ASP ASP.NET ASP FAQs Message Board Feedback

The 4 Guys Present: ASPFAQs.com

Jump to a FAQ
Enter FAQ #:
..or see our 10 Most Viewed FAQs.

4GuysFromRolla.com : ASP FAQS : Application Object


Question:

How can I use application-level variables to cache information?


[Print this FAQ]

Answer: Caching is the process of taking information that is time-instensive to collect and storing it in a location that requires less time to access. For example, in your office your desk serves as a cache of sorts - it's much quicker to work with documents on your desk than to have to walk over to the filing cabinet each time you need a new document.

In the ASP-world, some time-intensive tasks include, among other things, accessing a database. It is much, much faster in an ASP page to access an in-memory variable than to retrieve the value from a database. (This is due to the time-expensive steps that must be taken to work with a database - setting up the database connection, issuing the query, retrieving the results, etc.)

We can use application-level variables as a cache to store database results. Since application variables are accessible from any ASP page they are quite a logical choice for a caching system. A real-world example of caching can be seen on the ASPMessageboard. On the home page a list of the various messageboard forums is presented along with how many posts each forum has received in the current day and since the forum's existence. This information is retrieved from a database. Rather than querying the database each time someone visits the main page, I use application variables to cache the results of the database query. I also use an application variable to record at what time I last updated the cache with database results. Once that time is greater than 15 minutes, I invalidate the cache. That is, I rerun the database query and populate the application variables with the result of the latest database query.

With this caching technique in place, database hits on the ASPMessageboard homepage only occur, at most, once every 15 minutes. Previously, a database read occurred each time someone visited the home page. So, if 500 page views occurred on the home page in a 15 minute cycle, 500 database reads would have occurred. With the caching system in place, regardless of how many folks visit the home page in a 15 minute period, there will be only one database read! This illustrates the performance benefit inherent with caching!

To read about the technical specifics of using application variables in caching, be sure to read: A Real-World Example of Caching Data in the Application Object. That article examines the ASPMessageboard home page cachine discussed in this FAQ, a great read.

Also, for a thorough collection of caching-related article be sure to check out the Caching Article Index.

Happy Programming!

FAQ posted by Scott Mitchell at 3/4/2001 11:24:04 PM to the Application Object category. This FAQ has been viewed 97,894 times.

Do you have a FAQ you'd like to suggest? Suggestions? Comments? If so, send it in! Also, if you'd like to be a FAQ Admin (creating/editing FAQs), let me know! If you are looking for other FAQs, be sure to check out the 4Guys FAQ and Commonly Asked Messageboard Questions!

Most Viewed FAQs:

1.) How can I format numbers and date/times using ASP.NET? For example, I want to format a number as a currency. (761643 views)
2.) I am using Access and getting a 80004005 error (or a [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)' error) when trying to open a connection! How can I fix this problem? (207777 views)
3.) How can I convert a Recordset into an array? Also, how can I convert an array into a Recordset? (202549 views)
4.) How can I quickly sort a VBScript array? (196039 views)
5.) How can I find out if a record already exists in a database? If it doesn't, I want to add it. (156019 views)
6.) How do I display data on a web page using arrays instead of Do...While...MoveNext...???... (152331 views)
7.) When I get a list of all files in a directory via the FileSystemObject, they aren't ordered in any reasonable way. How can I sort the files by name? Or by size? Or by date created? Or... (140381 views)
8.) For session variables to work, must the Web visitor have cookies enabled? (110162 views)
9.) Can I send emails without using CDONTS? (107083 views)
10.) How can I take the result of a SELECT...MULTIPLE or a group of same-named checkboxes and turn it into a query? That is, if the user selects 3 answers, how can I construct a query that looks for all 3? (106308 views)
Last computed at 9/17/2007 3:22:00 AM


ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article