jump to navigation

Caching an asp.net page depending on the user’s browser language October 6, 2010

Posted by fofo in asp.net, VB 2005, VB 2008, Visual Studio 2008, Visual Studio 2010.
Tags: ,
trackback

This is my second post regarding caching in asp.net applications.

A friend of mine asked me if he can control caching of an asp.net page depending on the user’s language browser.

Let’s see how we can accomplish that with a step by step example.

You can use any of the versions of Visual studio (VS 2005,VS2008,VS2010 express editions work fine).

I will use VS 2010 Ultimate edition and VB.net as the .Net language of choice.

We will identify the language of the user’s browser from the HTTP headers.

More specifically we will look at the Accept-Language header item.

1) Create an Asp.net web site and name it as you want.Add a label web server control to your default.aspx page.

2) In the default.aspx just below the Page directive ( top of the page ) you add the following bit of code:

<%@ OutputCache Duration="50" VaryByHeader="Accept-Language"
VaryByParam="none"
 %>

We want to use VaryByHeader and assign it to the header item Accept-Language that we want to vary caching by.

So now this page is going to be cached based on the language of the user’s browser.

3) Now switch back to the code behind and in the Page_Load event handling routine type the following

If Not (Request.Headers("Accept-Language")) Is Nothing Then 
mylabel.Text = "language of the user is " +
 Request.Headers("Accept-Language").ToString
End If

4) Run your application and see the result-your browser’s language. In most cases it will be something like “en-us“, or anything else that the HTML page will output. So if now we have 20 people

hitting our page – within the 50 seconds cache period – and all of them have “en-us” as their browser’s language they are going to get the cached version of the page. The page will not be re-rendered through the whole

page events-lifecycle.

5) If we have people hitting our page with a browser with a different language (.eg fr,es ) the Asp.Net would cache a second version of the page in french. So now we would have 2 cached versions of the page, one in english and one in french.So the first french person (browser language) to hit the page, he would see the page rendered to him ( the whole page lifecycle will run ) and at the same time it will be cached so subsequent requests from french people-users-browsers will be served from the cache.

If you need the code, just email me.

Hope it helps !!!

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: