ajax performance dojo struts2

ajax - Los archivos de Struts 2 y Dojo son demasiado pesados ​​y afectan el rendimiento del sitio. ¿Algún recurso?



performance struts2 (3)

Asegúrese de seguir esta pregunta frecuente primero: http://struts.apache.org/2.x/docs/performance-tuning.html

Por lo general, vuelvo a escribir mi propio tema en lugar de usar el tema struts2 ajax, que tiene Dojo incorporado. De esta forma puedo usar cualquier kit de herramientas que quiera usar (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.

Bueno, hemos desarrollado una aplicación j2ee que utiliza 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. (aumento de dojo.js de 240kb a 350kb) 2. Retiró todo el material estático del contenedor de puntales y lo mantuvo afuera.

El rendimiento fue significativamente mejorado. Pero aún así es bastante pesado como puedes 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: utilicé Firebug e YSlow con mi aplicación. Un par de cambios que mejoraron enormemente mi situación se mencionan a continuación:

  1. Creación personalizada de dojo (reducción del número de E / S)
  2. Mueva los archivos estáticos fuera del contenedor Struts (ayudó mucho)
  3. sintonice su servidor para descomprimir la respuesta (redujo el tamaño de respuesta a 1/3)
  4. Reduce el número de imágenes en tu sitio (esto es obvio)

Continuará actualizando en otros cambios ..


La última vez que lo revisé, Struts estaba enviando un lanzamiento de Dojo (0.4) que está pasando a los 2 años. 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.


En primer lugar, compruebe que ha hecho todo lo posible en el servidor para facilitar el almacenamiento en caché (por ejemplo, configurar los encabezados HTTP correctos, la compresión, el almacenamiento en caché del lado del servidor, los cachés anteriores, etc.). Ver Mejorar el rendimiento ... para más detalles.

El objetivo es reducir la 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 también se aplica a sus datos dinámicos: 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:

  • Evaluar la técnica de pantalla de bienvenida discutida en el enlace de arriba.
  • Si utiliza muchos widgets de formularios diferentes, vea si es realmente necesario y recurra 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, de modo que solo el subconjunto necesario se carga en las páginas web. Consulte los detalles en El sistema de paquete y compilaciones personalizadas .

Construyendo aplicaciones web con Dojo para ganarse la vida en los últimos 2 años, aún no vi el que no puede ser optimizado adecuadamente hasta que es aceptado y percibido por los usuarios finales como "rápido", "ágil" y "liviano". .