Output Caching with Custom HTTP Handler

C

Cramer

I'm creating a custom handler that does not extend Page (only implements
IHttpHandler) - and I would like for its output to be cached to improve
runtime performance. I would like to leverage ASP.NET's output caching
capabilities that are already in place for standard Page requests. How can I
leverage the existing output caching mechanisms with my custom HTTP handler?
I'd like the standard output caching options to be available, if possible
(options like sliding expiration, etc).

Thanks.
 
J

John Smith

Cramer,
You can utilize output caching on a handler, however you have to do it via code instead of declaratively. If you add this block of code inside the “ProcessRequest” method your handler response will be cached.

TimeSpan freshness = new TimeSpan(0, 0, 5, 0);
DateTime now = DateTime.Now;
context.Response.Cache.SetExpires(now.Add(freshness));
context.Response.Cache.SetMaxAge(freshness);
context.Response.Cache.SetCacheability(HttpCacheability.Server);
context.Response.Cache.SetValidUntilExpires(true);

You can test it out pretty easily – write a handler which returns the current time

context.Response.ContentType = "text/plain";
context.Response.Write("Hello World " + DateTime.Now.ToLongTimeString());

And run the handler without the caching code a few times. The seconds will update (as you would expect). Add that block of code above and run it again, voila – the time won’t change, its serving the page out of the output cache now.
It supports all the same methods the declarative approach does and affords you even more control.

context.Response.Cache.VaryByParams["C"] = true;
 
C

Cramer

Very good! Thanks! Since the OP I was making progress, but your sample code
shows how simple it can be.

-Cramer
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top