Flesk Viewstate Optimizer Documentation

Flesk.ViewStateOptimizer_NET20

I came across this excellent looking tool Flesk ViewState Optimizer but was not able to find any details or documentation on it.  Apparently the tool used to be commercial but now its free!  I was able to dig up some history on it

Flesk.ViewStateOptimizer is a unique technology that overrides sending ViewState object to your client’s browser! This means that your client’s browser will no longer receive those large hidden field values, which thus reducing downloading time. Instead, Flesk.ViewStateOptimizer saves the page’s Viewstate hidden field to a file, on the server side, speeding up processing time, downloading time and data.

Combining Flesk.ViewStateOptimizer and Flesk.Accelerator,
you can benefit from reducing downloading data and downloading time up to 30 times faster! No other components
do the same or give the same results!

Flesk.Accelerator and Flesk.ViewStateOptimizer are now released with versions
targeted for the .NET Framework v2.0

 

How it works?

Flesk.ViewStateOptimizer has several viewstate optimization possibilities that can be set through the web.config file.
From viewstate data compression to saving viewstate on server farms, anything can be possible. This means that Flesk.ViewStateOptimizer can persist values using server side Sessions or files saved on shared locaton accessible by a server farm, or by using common viewstate hidden field value on client side, with the ability to compress data.

There are 2 ways to setup Flesk.ViewStateOptimizer on your web application or .Net project:

  1. In all your codebehind, instead of inheriting your class with
    System.Web.UI.Page, change the inheritance to Flesk.Accelerator.Page.
    If you use script block codebehind, use the following lines:

    <%@ Page  Language="C#" Inherits="Flesk.Accelerator.Page" %>
    
  2. Flesk.ViewStateOptimizer is designed to meet the requirements of customers that are unable to change
    the base class of their pages.
    As such, Flesk.ViewStateOptimizer provides static methods that allows calling the viewstate procedures
    from within any page class.

    If you have access to the source of your base class, just add the following lines to the code:

    													
    protected override void  SavePageStateToPersistenceMedium(object viewStateBag)
    {
       Flesk.Accelerator.Page.SavePageStateToPersistenceMedium(this, viewStateBag);
    }
    
    protected override object LoadPageStateFromPersistenceMedium()
    {
        return Flesk.Accelerator.Page.LoadPageStateFromPersistenceMedium(this);
    }
    

    If you are using precompiled code you’ll have to edit your aspx files. If at all possible, add the following

    snippet to your aspx file:

    protected override PageStatePersister PageStatePersister
    {
      get
      {
        return Flesk.Accelerator.Page.GetPageStatePersister(this);
      }
    }
    

 

Flesk.ViewStateOptimizer can use different storage methods:

  • save to file (saves ViewState into a file, server side)
  • Session (saves ViewState into a Session variable, server side)

  • Default (default ViewState saving method, sends hidden fields to client side)

Other parameters are:

  • depending on the storage method setting, Flesk.ViewStateOptimizer can be set to compress viewstate value,
    so that it can be significantly smaller than the original value
  • the request behaviour of viewstate can be set to be generated on the first request to a page and then
    reused in the following postbacks, or to be generated on each request to a page.
    A common scenario where viewstate set to be generated on each request can be usefull is in Content Management
    frameworks:
    page loads up some controls on postback based on some state stored in hidden input values, handles events
    and as a result of those actions purges the control collection and loads new controls.
    Standard Flesk.ViewStateOptimizer configuration persists the Viewstate using the same GUID as the original
    page.
    If the user then hit’s refresh (F5) in the browser, the data is posted again, the framework loads up it’s
    controls based on the original state but the viewstate value now matches the new controls. This also happens
    with any change to the viewstate between postbacks, when users back up or use refresh in their browsers.

    The solution was to make Flesk.ViewStateOptimizer generate GUID’s each and every time the viewstate is persisted.
    Only then is the viewstate truly unique for each page.

 

Features

V1.0

  • Reduces downloading time of your website or web application, by not sending back the page’s Viewstate
    hidden field.
  • This component is setup individually. It is not shared by all the webserver’s websites, but only by
    your website or webapplication. This means that you can install it in your hosting account without changing
    any webserver’s configuration.
  • Runs on .NET Framework v1.1 and v2.0. No configuration required. Only a few lines on your web.config
    file is all you need to change.
  • Greatly reduces bandwidth traffic from your webserver, reduces Posted data from your client’s browser,
    and speeds up your web application!
    Supported by WebFarms

V1.2

  • Compresses the ViewState value. This means that ViewState is sent and returned to/from client’s browser
    or saved into local file, on server, compressed, thus reducing ViewState’s value length and increasing
    speed even more!
  • This release of the Viewstate Optimizer is designed to meet the requirements of
    customers that are unable to change the base class of their pages.
  • The Flesk.Accelerator.Page class now provides two static methods that allow calling the viewstate

    procedures from within any page class.

  • ViewState files can now be persisted on shared location accessible by all servers in a server farm.

From Archive.Org

Not sure what happened to the company but glad they decided to give their product for free now! (GPL license)

Edit Aug 12, 2010

Web.Config Requirements

To use this, here is what you put in Web.Config between and

  <Flesk.NET>
    <!-- 
		The StorageMethod parameter sets the ViewState's storage type.
		Possible values are :
			
			- File (saves ViewState into a file, server side)
				- StoragePath must specify a write enabled server path ( ~ means site root path)
					If StoragePath is a web path (i.e.: \\MachineName\Dir), when used in webfarms,
					please add the following line under <system.web>
					<identity impersonate="true" userName="domain\username" password="userpass"/>
						
			- Default (default ViewState saving method, sending hidden fields to client side)
			
			- Session (saves ViewState into a Session variable, server side)
			
			- SqlServer (saves the ViewState into a database table)
				- ConnectionString specifies the database connection.
				- TableName specifies the table in the database where the records will be stored.
			
		New Option :
			Compressed="true" or Compressed="false"
			this will compress the ViewState if StorageMethod is Default or File.
			so the ViewState's value will be significantly smaller than the original value.
			Compression method is not suported by StorageMethod="Session"
			
		-->
    <ViewStateOptimizer
			PersistenceHandler="Flesk.Accelerator.SessionViewstatePersister, Flesk.Accelerator"
			StorageMethod="SqlServer"
			StoragePath="~/Files/Logs"
			ConnectionString="Server=...;Database=...;Uid=...;Pwd=...
			TableName="app_ViewState"
			Compressed="false"
			RequestBehavior="EachLoad"
			ViewStateCleanupInterval="01:00:00"
			/>
  </Flesk.NET>

Between and put the following:

    <sectionGroup name="Flesk.NET">
      <section name="ViewStateOptimizer" type="Flesk.Accelerator.Viewstate.ConfigHandler, Flesk.ViewState" />
    </sectionGroup>

Between and you can put

			<!--
			This HttpModule provides automatic cleanup of viewstate files
			on the start of each session, thus requiring
			the SessionStateModule to be installed as well.
		  -->
			<add name="ViewstateCleanupModule" type="Flesk.Accelerator.Viewstate.CleanupModule, Flesk.ViewState"/>
		</httpModules>

7 comments on “Flesk Viewstate Optimizer Documentation”

  1. Sameer Alibhai Reply

    I dont think theres any difference in using it .NET 3.5 or 2.0 as the core modules of 2.0 were not modified in 3.5
    3.5 is essentially new functionality added to 2.0
    So I think you’d be okay with it

    • Sameer Reply

      Hi Chris. I added an addendum to the bottom of the post with the web.config changes required

  2. Ariel Reply

    What happens with the view state that was added to the session? When this information is released?

  3. Safa Reply

    Hi, I am developing in VB.Net and am stock in the part which says “add this to your base class”. the problem is SavePageStateToPersistenceMedium is not available as a shared method. Only is GetPageStatePersister which you have mentioned. but how do I use this exactly? I mean where exactly do I call it and what method of the return do I use? The returned object has save and load methods.

    I have added Flesk.ViewState.dll to my references and the version is 2.4.8000.0

    thank you, I really appreciate your help.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>