Thursday, October 4, 2012

asp.net output cache not working? and the same code works on some servers? why

Here is one very typical issue that bring you to this blog.
Issues, I have one asp.net application with nothing special, for the performance consideration, we turn on the output cache. somehow, the same page never got cached on some servers, and It did cached on most servers. of vice versa.

short answer, It has nothing to be with the IIS Version. It’s All about HTTP Cookies and .net Framework version.  Let’s put a very basic Page.

just turn on the output cache using the most simple way,
image

for the code, we just send out some cookie,
image

Let’s start from some server that it works,
1st time you hit the url, get a initial access time.

image

  and cookie was sent to client from server side,
image

try again, this page will be cached. you are always see the page, you are 1st time here,
image

Why? because we setup the page need to be cached for 600 seconds, and cache response vary by any params, if we add something to the url parameter, we wills see refreshed page,
image

that’s the end of this cache working story, if we deploy the same code to another server, results are totally different.
1st time,
image

retry,
image

Why? I did a lot check, and find out the reason is simple. IT’S BECAUSE OF THE .NET FRAMEWORK VERSION.

In earlier verison of the FX, if you check the ouputCacheModule , it will cache response without checking the cookie value, that means even response has a server side cookie, it will still cache the response.
image

But for newer version, it will simply ignore the cache insert if response has cookie associated.
 image

my old version is, .4209, it never check cookie when cache response. that means you may see other people’s response (like login name?)
image
new version,.5456, it will check cookie which is more safe.
image

Hope it helps.

3 comments:

Oleksiy said...

It helped a lot. Thank you.

JacobHarman said...

Programming designers who plan and compose programs that run computerized tests on new or existing programming are known as test mechanization engineers (otherwise called test computerization engineers). These projects are a vital part of the product improvement life cycle. Before it is bundled and sold on the open market, PC equipment or programming should be tried by a testing investigator. Since test experts are the last line of value control, the work requests cautious tender loving care>> qa tester freelance

Lovie said...

Recently I just want to know about programming and then I asked my friend. Then he took some time and share a link of this post with me. I really like the way of explaining of this writer. Then my friend told me about the thesis tester website. That website has a tool that is used mainly for improving our sentence formation. Its feature is really awesome.

 
Locations of visitors to this page