2008-11-29 14 views
7

Bueno, hemos desarrollado una aplicación j2ee utilizando las capacidades struts2 ajax. Encontramos que la implementación de dojo es bastante lenta. Hicimos las siguientes cosas: 1. Creación personalizada de la biblioteca dojo. (aumentó dojo.js de 240kb a 350kb) 2. Sacó todo el material estático del soporte de puntales y lo mantuvo afuera.Los archivos Struts 2 y Dojo son demasiado pesados ​​y afectan el rendimiento del sitio. ¿Alguna solución?

El rendimiento se mejoró significativamente. Pero aún así es bastante pesado como se puede adivinar con un tamaño de 350kb.

¿Se supone que struts2 ajax es tan pesado? o hay alguna implementación más ligera disponible?


Editar: He usado Firebug y YSlow con mi aplicación. Un par de cambios que han mejorado mi situación enormemente se mencionan a continuación: acumulación

  1. personalizada del dojo (reduce el número de E/S)
  2. Mueva los archivos estáticos de tarro de puntales (ayudado mucho)
  3. sintonizar su servidor a gzip la respuesta (reducción del tamaño de la respuesta a 1/3)
  4. reducir el número de imágenes en su sitio. (esto es obvio)

Will mantener la actualización de más cambios ..

Respuesta

8

Primero compruebe que ha hecho todo lo posible en el servidor para facilitar el almacenamiento en caché (por ejemplo, establecer encabezados HTTP correctos, compresión, almacenamiento en caché del lado del servidor, cachés en sentido ascendente, etc.). Vea Improving performance… para más detalles.

El objetivo es reducir la cantidad de E/S tanto como sea posible — use Firebug o cualquier otra herramienta de monitoreo de tráfico de red para ver cuánto se envía de ida y vuelta. Intente minimizar el número de solicitudes de E/S y el número total de bytes.

No olvide que se aplica a sus datos dinámicos también — elija formatos eficientes, agrupe varias solicitudes relacionadas, elimine toda la madera muerta que se envía una y otra vez sin cambios.

Si los ajustes personalizados y los ajustes del lado del servidor no ayudaron, considere reestructurar su aplicación web para que sea más liviana. Ejemplos:

  • Evalúe la técnica de pantalla de bienvenida discutida en el enlace anterior.
  • Si usa muchos widgets de formularios diferentes, fíjese si es realmente necesario y vuelva a los elementos DOM normales como "entrada", "botón", "área de texto", "seleccionar".
  • Lo mismo ocurre con los widgets de diseño. Vea si CSS simple puede ayudarlo.
  • Evalúa construir Dojo en capas en lugar de un dojo.js monolítico, por lo que solo el subconjunto necesario se carga en las páginas web. Ver detalles en The Package System and Custom Builds.

Creación de aplicaciones web con Dojo como forma de vida durante los últimos 2 años Todavía no veía la que no se puede optimizar adecuadamente hasta que es aceptada y percibida por los usuarios finales como "rápida", "ágil", y "ligero".

+0

Hola Eugene .. ¿Es habitual tener el tamaño de archivo dojo.js de más de 300 kb? ya que esta era una de mis preocupaciones también ... Gracias. – Satya

+0

La base es 26k. 300k significa que incluiste muchas otras cosas. –

0

La última vez que revisé, struts estaba enviando un lanzamiento de Dojo (0.4) eso está pasando 2 años de edad. Dojo hizo una reescritura para la versión 0.9/1.0 que tuvo ganancias de rendimiento significativas y un tamaño de código reducido. Debes asegurarte de que estás ejecutando una versión reciente de Dojo (la versión actual es 1.2.3) y usar la compilación y las sugerencias de Eugene, más arriba.

+0

¿Qué tan buena es la compatibilidad de Struts con las versiones mejoradas de dojo? No lo he intentado, pero lo dudo. Gracias. – Satya

2

Asegúrese de seguir este FAQ primera: http://struts.apache.org/2.x/docs/performance-tuning.html

que suelo volver a escribir mi propio tema en lugar de utilizar el tema ajax struts2 el cual ha construido dojo en esta manera puedo usar cualquier conjunto de herramientas que desea utilizar. (jQuery). Vi las mayores mejoras de rendimiento cuando copié la carpeta de plantillas desde el contenedor al directorio web raíz para la aplicación web.

Cuestiones relacionadas