A Classic ASP Page Caching Object, Part 2By Joe Audette
In Part 1 we discussed the requirements for the page caching object and how to use it through an ASP page. In this part we look at how to pass in caching instructions through the querystring and performance results of the caching object as compared to ASP pages tested without using the page cache object.
Specifying Cache Behavior via the QueryString
Hopefully by now you're impressed with what the page caching object gives you for such little coding. You can further extend the behavior of the page caching object by specifying querystring parameters. That is, for a particular page you can flush the cache regardless of whether or not the cache has expired by including
cachecommand=clear in the querystring. The
key supports the following three values:
- You can force the cache to be updated by typing an extra querystring parameter into the URL:
- You can bypass the cache and force a dynamic rendering of the page by typing an extra parameter
into the URL:
- You can clear the cache and force a dynamic rendering of the page by typing an extra parameter into
Web Stress Results
To test the effectiveness of the page cache object I setup a script to run for 1 minute against a single ASP page that returned 385 rows from SQL Server and rendered them in an html table. I configured the script to use the default 200 users and to measure maximum page requests per second. You can download the free Web Stress Tool, and find out more information about it, from: http://homer.rte.microsoft.com/.
Our test configuration was as follows:
I ran the same script once without the page cache object on the page, once with it on the page
configured to use
AutoCacheToFile, and once with it on the page configured to use
AutoCacheToMemory. The performance counter results were as follows:
(your mileage may vary, of course)
|Pure Dynamic ASP|
|Number of hits:||511|
|Max Requests per Second:||8.54|
|TTFB Avg (Time to first byte in milliseconds)||73.22|
|TTLB Avg (Time to last byte in milliseconds)||114.57|
|Caching To Text Files Enabled|
|Number of hits:||849|
|Max Requests per Second:||14.93|
|TTFB Avg (Time to first byte in milliseconds)||26.36|
|TTLB Avg (Time to last byte in milliseconds)||67.91|
|Caching To Application Variables Enabled|
|Number of hits:||970|
|Max Requests per Second:||16.74|
|TTFB Avg (Time to first byte in milliseconds)||16.15|
|TTLB Avg (Time to last byte in milliseconds)||59.04|
From the results above you see that significant performance gains were realized when caching the page. For complete report output refer to the text files included in the download.
About the Author, and Article Credits
Joe Audette MCSD, MCDBA, MCSE is a Web Developer for Transcender LLC in Nashville, TN. Thanks to Jason Wisener for helpful technical review of both this article and the object code. He also helped with the Web Stress Tool testing. Thanks also go to David Neal for planting the seed for the idea which became this object.
Joe is also a musician and the host of a web site supporting the music community in his home town. http://www.MurfreesboroMusic.com. You can reach him at firstname.lastname@example.org. Your feedback is welcome.