Foros del Web » Programación para mayores de 30 ;) » .NET »

Autopostback

Estas en el tema de Autopostback en el foro de .NET en Foros del Web. Hola a todos; Tengo un pequeño problema de "peso". Tengo un formulario con un montón de controles en la misma página (no lo he dividido ...
  #1 (permalink)  
Antiguo 03/08/2004, 00:34
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Autopostback

Hola a todos;

Tengo un pequeño problema de "peso". Tengo un formulario con un montón de controles en la misma página (no lo he dividido en varios form porque aún así lo he conseguido dejar sólo en 4 pantallas...y le parece mucho al cliente).

El problema que tengo es que al chequear algunos campos, se me activan otros, y es necesario realizar un autopostback (de hecho, utilizo 2). Os podéis imaginar que resulta muy lento, porque hay unos 50 controles en ese form.

¿Sabe alguien alguna manera de agilizar el tema, utilizando la memoria caché o algo así?

Muchas gracias
__________________
Pide lo que quieras...y luego paga por ello
  #2 (permalink)  
Antiguo 03/08/2004, 07:09
 
Fecha de Ingreso: junio-2001
Ubicación: Cordoba, Argentina
Mensajes: 190
Antigüedad: 22 años, 11 meses
Puntos: 0
Una forma de acelerar la descaga de html es habilitando la compresion en el IIS. Tambien se puede hacer manualmente por pagina utilizando alguna libreria de compresion gzip/deflate (la ventaja de esto es que no hace falta sobreacargar todo un servidor admenas la compresion IIS por defecto esta deshabilitada).

Hay una libreria que hace eso en esta direccion: http://www.icsharpcode.net/OpenSourc...b/Default.aspx

Con esta libreria podes hacer un filtro para web, el filtro toma la salida de una pagina determinada(OutputStream) y la convierte en otra salida, en este caso el filtro lo que hace es comprimirla. Haciendo esto yo logre el efecto de aceleración, hasta el triple o mas de rapido, sobre todo en internet. Solo tiene una pequeña carga sobre la ejecucion, 1mlsegundo o algo asi, pero solo la pones en las paginas mas pesadas.

Ejemplo de la Clase GZipFilter.

Imports System.IO
Imports ICSharpCode.SharpZipLib
Imports System.Web

Public Class GZipFilter
Inherits MemoryStream
Private _sink As Stream
Private _position As Long

Public Sub New(ByVal sink As Stream)
_sink = sink
End Sub 'New


Public Overrides Sub Close()
Dim ctx As HttpContext = HttpContext.Current
'PREGUNTAMOS SI EL BROWSER SOPORTA COMPRESION - TODOS LOS BROWSERS NUEVOS LA SOPORTAN
If Not ctx.Request.Headers.Item("Accept-Encoding") Is Nothing _
AndAlso ctx.Request.Headers.Item("Accept-Encoding").IndexOf("gzip") > -1 Then
Dim gzip As GZip.GZipOutputStream = New GZip.GZipOutputStream(_sink)
'LE DECIMOS QUE LA SALIDA VA GZIP
ctx.Response.AddHeader("Content-Encoding", "gzip")
WriteTo(gzip)
gzip.Close()
Else
'NO COMPRIMIMOS LA SALIDA.
WriteTo(_sink)
End If
MyBase.Close()
End Sub
End Class

despues en tu pagina haces lo siguiente en el evento load o en el prerender, le dice a tu pagina que utilice el filtro de compresion creado

Page.Response.Filter = New GZipFilter(Page.Response.Filter)

Saludos, si tenes alguna duda avisame, porque yo lo usado y anda bien.....

Ahh otra cosa para acelerar un sitio es borrando el viewstate, pasandolo a la base de datos o un archivo de texto o al cache, esto tambien ayuda bastante pero es otro tema....
__________________
Martin

Última edición por MartinAcevedo; 03/08/2004 a las 07:27
  #3 (permalink)  
Antiguo 03/08/2004, 07:30
Avatar de Mike1304  
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola.. MartinAcevedo excelente tu comentario, solo una preguntita
la clase GZipFilter puede ser usada en un user control?, es decir colocar el Page.Response.Filter = New GZipFilter(Page.Response.Filter) en el load del user control
  #4 (permalink)  
Antiguo 03/08/2004, 07:34
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Muchas gracias, Martín. Lo voy a probar, aunque lo cierto es que me pierdo un poco. Quizá hoy no me dé tiempo, pero mañana sin falta lo hago y te digo resultados y problemas, si es que surgen.

Gracias por tu tiempo.

Luis.
__________________
Pide lo que quieras...y luego paga por ello
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:20.