Viewstate se almacena en la página en sí mismo en forma codificada. No puede acceder al viewstate en el lado del cliente de manera directa. Necesita conocer los algoritmos de codificación/descodificación para obtener los datos valiosos de este viewstate en el código del cliente.
Puede usar la variable oculta para almacenar datos que se usarán solo en esa página. Las variables ocultas son accesibles desde el lado del cliente y el código del lado del servidor.
Puede usar caché o sesión para almacenar datatable (datos grandes). Tendrán un buen rendimiento en comparación con ViewState.
La caché siempre se está utilizando la memoria de la máquina, la sesión utiliza lo que se ha configurado:
En una granja de servidores web de la sesión puede ser local (que sólo funciona si la afinidad está establecido) o remoto (servidor de estado o base de datos, o personalizada), pero la memoria caché siempre es local.
Por lo tanto, almacenar una DataTable en la caché consumirá memoria, pero no usará la serialización.
PD: el almacenamiento de un DataSet en lugar de un DataTable no cambiará casi nada.
Refer Cache Implementation
Es mejor que examine la caché de ASP.NET, puede que la encuentre adecuada para sus necesidades. –