ASP.NET View State Caching in Microsoft Azure for Better Performance

ASP.NET View State is a client side state management mechanism, which is used to save page and control values. ASP.NET View State is a hidden field on the page as an encoded Base64 string. It is sent to client as part of every response and is returned to the server by the client as part of a post back.

<input id="__VIEWSTATE" type="hidden"

Problems with ASP.NET View State in Microsoft Azure

ASP.NET View State is a very important feature for applications deployed as web/worker roles in Microsoft Azure. But, View state comes with some issues that you need to understand and resolve in order to take full benefit from it.

First of all, ASP.NET View State becomes very large especially when your Microsoft Azure ASP.NET application has a lot of heavy controls on its pages. This results in heavy view state payload which travels back and forth between browser and your application on each request. Heavy view state payload slows down performance and also results in extra bandwidth consumption especially when an average ASP.NET View State ends up in 100’s of kilobytes and when millions of such requests are processed within your Microsoft Azure application.

ASP.NET View State is also a security risk when sending confidential data as part of view state to client. This data is vulnerable to attacks and can be tampered with by an attacker, which is a serious security threat.

Solution to ASP.NET View State Problems

You can resolve ASP.NET View State issues in Microsoft Azure applications by storing the actual ASP.NET View State on the server side in a distributed cache and never send it back to browser along with request payload.

NCache for Azure is an extremely fast and scalable distributed cache for Microsoft Azure. NCache for Azure allows you to store actual ASP.NET View State in Distributed Cache on server side and instead send a small token as view state to the client in a request payload. This dramatically reduces the request payload size. View State token is then used on the server side to find the right ASP.NET View State in NCache for Azure Distributed Cache on post backs. A smaller payload resolves issues related to performance and bandwidth utilization because you are not dealing with huge view state anymore on each request in your Microsoft Azure Application. Moreover, View State stored on the server side in NCache for Azure distributed cache is never exposed to clients so it addresses the above mentioned security concerns.

Here is an example of a token being used in place of ASP.NET View State with NCache for Azure ASP.NET View State provider:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" />

Using NCache for Azure ASP.NET View State Caching

Step 1: Create an app.browser file in App_browsers directory. Plug in page adapters in the app.browser file as follows:

   File: App_browsersapp.browser 

<browser refID="Default">
      <adapter controlType="System.Web.UI.Page"
       adapterType="Alachisoft.NCache.Adapters.PageAdapter" />

Step 2: Add the following assembly reference in compilation section of web.config file.

   File: web.config

<compilation defaultLanguage="c#" debug="true" targetFramework="4.0">
      <add assembly="Alachisoft.NCache.Adapters, Version=,
       Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/>

Step 3: Register NCache for Azure config section in your web.config file.

   File: web.config

   <sectionGroup name="ncContentOptimization">
      <section name="settings"
       allowLocation="true" allowDefinition="Everywhere"/>

Step 4: Specify settings for your config section in web.config file (that was registered above). These settings control NCache for Azure ASP.NET View State Caching features.

   File: web.config

      <settings viewstateThreshold="12" enableViewstateCaching="true"
       enableTrace="false" groupedViewStateWithSessions="false"
         <cacheSettings cacheName="myCache"
                <expirationtype="Absolute" duration="1"/>


NCache for Azure provides a no code change option for your Microsoft Azure applications to store ASP.NET View State on the server side in a Distributed Cache. NCache for Azure ASP.NET View State provider optimizes performance by reducing request payload and bandwidth consumption while addressing security issues related to client side View State.

Download NCache Open Source and run it Microsoft Azure.

This entry was posted in ASP .NET performance, ASP.Net, ASP.NET View State, Distributed Cache, Microsoft Azure. Bookmark the permalink.

2 Responses to ASP.NET View State Caching in Microsoft Azure for Better Performance

  1. Kumar says:

    NCache does sound quite useful.

    In case of viewstate in page, the page can be posted back even after a very long time without any impact.
    How does NCache handle this scenario?

    • Basit Anwer says:

      I’m glad you thought of it so.

      By Default, NCache keeps all ViewStates indefinitely in the cache regardless how late the post back is issued. Therefore all view state requests will be handled by the cache.

      On the other hand, you can also associate time base expirations (Absolute or sliding) to ViewState and set the value high enough to avoid cache misses even after a long pots back time.

      You can also group ViewState with NCache Sessions. This way when a user session is removed from cache, all related ViewStates are automatically removed. This helps to avoid extra memory load on the cache providing you the best performance.

Leave a Reply

Your email address will not be published. Required fields are marked *