Struts 2 & amp; I file Dojo sono troppo pesanti e influiscono sulle prestazioni del sito. Qualche rimedio?

StackOverflow https://stackoverflow.com/questions/327820

Domanda

Beh .. abbiamo sviluppato un'applicazione j2ee usando le funzionalità ajax di struts2. Scopriamo che l'implementazione del dojo è piuttosto lenta. Abbiamo fatto le seguenti cose: 1. Creazione personalizzata della libreria dojo. (aumentato dojo.js da 240kb a 350kb) 2. Estrasse tutta la roba statica dal barattolo dei montanti e la tenne fuori.

Le prestazioni sono state notevolmente migliorate. Ma è ancora abbastanza pesante come puoi immaginare con una dimensione di 350kb ..

Struts2 Ajax dovrebbe essere così pesante? o c'è qualche implementazione più leggera disponibile?


Modifica: ho usato Firebug e YSlow con la mia applicazione. Di seguito sono menzionati alcuni cambiamenti che hanno migliorato enormemente la mia situazione:

  1. Build personalizzato di dojo (ridotto il numero di I / O)
  2. Sposta i file statici dal barattolo di Struts (aiutato moltissimo)
  3. ottimizza il tuo server per decomprimere la risposta (ha ridotto la dimensione della risposta a 1/3)
  4. Riduci il numero di immagini sul tuo sito (questo è ovvio)

Continuerà l'aggiornamento su ulteriori modifiche ..

È stato utile?

Soluzione

Prima di tutto verifica di aver fatto tutto sul server per facilitare la memorizzazione nella cache (ad es. impostazione delle intestazioni HTTP corrette, compressione, memorizzazione nella cache sul lato server, cache a monte e così via). Vedi Miglioramento delle prestazioni & # 8230; per maggiori dettagli.

L'obiettivo è ridurre l'I / O il più possibile & # 8212; usa Firebug o qualsiasi altro strumento di monitoraggio del traffico di rete per vedere quanto viene inviato avanti e indietro. Cerca di ridurre al minimo il numero di richieste I / O e il numero totale di byte.

Non dimenticare che si applica anche ai tuoi dati dinamici & # 8212; scegliere formati efficienti, raggruppare insieme diverse richieste correlate, rimuovere tutti i deadwood che vengono inviati più e più volte invariati.

Se la modifica personalizzata e le modifiche lato server non sono state di aiuto, considera la ristrutturazione della tua app Web più leggera. Esempi:

  • Valuta la tecnica della schermata iniziale discussa nel link sopra.
  • Se si utilizzano molti widget di moduli diversi, vedere se è veramente necessario e ricorrere a normali elementi DOM come " input " ;, " pulsante " ;, " textarea " ;, " selezionare ".
  • Lo stesso vale per i widget di layout. Verifica se CSS semplice può aiutarti.
  • Valuta la costruzione di Dojo a strati anziché un dojo.js monolitico in modo che solo il sottoinsieme necessario sia caricato da pagine Web. Vedi i dettagli in Il sistema di pacchetti e build personalizzate .

Costruendo applicazioni web con Dojo da 2 anni, non vedevo ancora quella che non può essere ottimizzata correttamente fino a quando non viene completamente accettata e percepita dagli utenti finali come "veloce", "agile", e " leggero ".

Altri suggerimenti

Assicurati di seguire prima questa domanda: http://struts.apache.org/2.x/docs/ prestazioni-tuning.html

Di solito riscrivo il mio tema invece di usare il tema ajax struts2 che ha dojo incorporato. In questo modo posso usare qualunque toolkit che voglio usare (jQuery). Ho visto i maggiori miglioramenti delle prestazioni quando ho copiato la cartella dei modelli dal vaso alla directory web principale per la webapp.

L'ultima volta che ho controllato, struts stava distribuendo una versione di Dojo (0.4) che andava avanti per 2 anni. Dojo fece una riscrittura per la versione 0.9 / 1.0 che aveva significativi miglioramenti delle prestazioni e dimensioni del codice ridotte. Dovresti assicurarti di eseguire una versione recente di Dojo (la versione corrente è 1.2.3) e utilizzare la build e i suggerimenti di Eugene, sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top