Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Problema di lentezza con javascript in Internet Explorer 7
lunedì 23 febbraio 2009 - 15.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 23 feb 2009 - 15:47
Ciao a tutti, ho uno strano comportamento su una pagina del mio sito è non riesco a capire da cosa dipenda.
Questa pagina serve a gestire degli ordini e può essere caratterizzata da decine di righe d'ordine...ad ogni riga sono assegnate delle funzioni javascript per gestire la visualizzazione di alcune finestre informative e per implementare una serie di controlli sui dati di input.
Ora ho questo problema. Quando ci sono molte righe d'ordine il sito ne risente pesantemente in termini di prestazioni.
Se ad esempio clicco su un button definito all'interno della pagina, prima che venga richiamato l'evento click la pagina si blocca per alcuni secondi (in cui non riesco a capire che operazione stia avvenendo), dopodichè viene catturato l'evento e le operazioni previste vengono eseguite.
Questo comportamento credo sia dovuto alla gestione javascript infatti disabilitandolo dalle impostazioni del browser tutto è molto veloce. La cosa strana è che con Firefox non ho la stessa comportamento, infatti con il browser mozilla i tempi di risposta sono decisamente ridotti.
Sembra che il tutto sia legato a IE7.
Ho pensato che possa dipendere anche dallo scriptmanager dell'ajaxtoolkit, ma non saprei quale impostazioni prova a modificare per risolvere il problema.
Nessuno di voi ha mai avuto un problema simile?
Avete qualche idea o suggerimento per risolvere la situazione?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
lun 23 feb 2009 - 16:17
Ciao,
considera che le prestazioni di Firefox e Chrome rispetto a internet explorer 7 nell'esecuzione del javascript sono nettamente migliori:
http://mozlinks-it.blogspot.com/2008/02/le-prestazioni-di-firefox-3.html
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 23 feb 2009 - 16:49
Si lo so...ma adesso bisogna che trovo un modo per farlo andare decentemente anche su IE.
Sinceramente non ho idea di come fare ma qualcosa bisogna che mi invento.
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
lun 23 feb 2009 - 16:53
Cerca di capire quale parte del javascript risulta più pesante (se il controllo dati o altro) e cerca di ottimizzare quella. Che tipo di operazioni fai? Magari il discorso di lentezza e semplicemente dovuto al fatto che ci sono moltri controlli html e richiamare una semplice getElementById risulta pesante...
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 23 feb 2009 - 17:31
Si infatti bisogna che ottimizzo per bene il tutto perchè tra updatepanel e funzioni js manuali la pagina risulta piuttosto pesante.
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mer 25 feb 2009 - 09:28
dunque facendo un pò di prove ho scoperto è la causa sono gli updatepanel...o meglio, quando metto l'updatepanel IE dà quei problemi.
per la precisione, nella pagina ho 3 updatepanel...dove all'interno sono inseriti alcuni controlli dell'ajaxtoolkit. Ad esempio in uno c'è inserito il tabcontainer.
Quando clicco su un button che si trova dentro l'updatepanel inspiegabilmente ho questi ritardi nell'attivazione degli eventi.
L'updatepanel ha una serie di proprietà (es: updatemode, rendermode) ma non so se andando ad agire su una di esse si risolve il problema.
Secondo voi da cosa potrebbe dipendere?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 25 feb 2009 - 09:39
Devi controllare anche cosa ritorna ogni update panel.. Se il passaggio dei dati è molto pesante ci sta che il browser risponda con tempi molto lunghi. Gli update panel purtroppo danno di questi problemi se usati troppo pesantemente.
Per analizzare il flusso dei dati ti consiglio di usare dei tool come Fiddler che ti fanno vedere cosa viene trasferito nelle varie richieste e la quantità di dati:
http://blogs.dotnethell.it/rossimarko/Fiddler-2__15036.aspx
Un'altra cosa che ti consiglio di impostare è l'UpdateMode="Conditional", vuol dire che l'update panel viene aggiornato solo in seguito ad eventi scatenati al suo interno o in uno dei controlli inseriti come trigger. Se updateMode="Always" vuol dire che l'update panel viene sempre aggiornato ad ogni richiesta e spesso è uno spreco inutile di banda e risorse
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
ven 27 feb 2009 - 10:44
Ciao, sto ancora lottando con il problema.
Per tagliare la testa al toro vorrei riuscire a gestire gli eventi dei button al di fuori degli updatepanel.
Ad esempio ho un bottone che richiama una operazione di salvataggio, quando clicco sul button parte una animazione di attesa e nel frattemo l'operazione di salvataggio viene eseguita senza che la pagina venga ricaricata.
Però se metto il button fuori dall'updatepanel chiaramente perdo il comportamento ajax e la pagina viene ricaricata.
C'è un modo per evitare i postback al click? Desidererei che la pagina non venga ricaricata...attualmente l'unica soluzione che mi viene in mente è l'utilizzo dei pagemethods, ma prima vorrei sapere se è possibile farlo in altro modo.
Qualche suggerimento?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
ven 27 feb 2009 - 10:51
Ciao,
se vuoi agganciare un updatepanel all'esecuzione di un pulsante puoi farlo con i trigger (
http://msdn.microsoft.com/it-it/library/system.web.ui.asyncpostbacktrigger.aspx
)
In pratica alla pressione del pulsante non viene fatto il classico post back di tutta la pagina ma viene eseguita la procedura su server e poi viene aggiornato solamente l'updatepanel che ha agganciato il trigger.
Se invece tu non hai questa esigenza ma vuoi semplicemente un bottone che una volta premuto richiama una funzione su server senza aggiornare nessuna parte del sito web allora direi che i pagemethod vanno bene, oppure un classico webservice con chiamata da javascript attraverso lo scriptmanager
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !