Optimizar código personalizado para celulares
En una presentación reciente, el director de tecnología de Pagely, Joshua Eichorn, dijo en Pressnomics 5 que el mayor problema de rendimiento que encuentra son las solicitudes HTTP que no se manejan adecuadamente.
Si ha optimizado su sitio utilizando todo lo que mencionamos en esta guía, pero aún está viendo tiempos de carga lentos, mire muy detenidamente sus solicitudes HTTP. Si sus solicitudes no caducan adecuadamente, podrían estar consumiendo recursos del servidor. Esto se puede multiplicar por cada visitante que carga su sitio, ralentizándolo progresivamente.
Lo mismo puede suceder con las consultas wpdb, o con el uso indebido de la API transitoria. Los detalles técnicos de esto están más allá de la profundidad de este artículo, pero esperamos que le brinde un lugar para comenzar su depuración.
Conclusión
Al acelerar su sitio para dispositivos móviles, lo importante que debe recordar es que no existe un plan de acción único para todos.
Un sitio puede duplicar el tiempo de carga de su página simplemente moviendo los hosts de la web, pero otro sitio puede tener un código personalizado que está creando un cuello de botella sin importar el host que utilicen. En mi opinión, es mejor comenzar con cosas importantes como su host, CDN y la optimización de imágenes, ya que éstas pueden tener los mayores beneficios. Si aún no ve las mejoras que está buscando, continúe con la optimización de CSS y Javascript, y la depuración de cuellos de botella de código personalizado.
Acelerar su sitio para sus visitantes móviles es lo más importante que puede hacer para aumentar las conversiones móviles. Es más importante que su tema de respuesta, ya que muchos visitantes ni siquiera esperarán a que su sitio se cargue si demora demasiado.
Para asegurarse de que no se haya perdido nada, descargue esta guía completa en formato PDF ingresando su información a continuación.
¿Cómo optimizar el rendimiento de tu ORM?
La recomendación en aplicaciones complejas de alto rendimiento es que se debe supervisar el código SQL generado, identificar si dicho código es óptimo y en caso contrario optimizar el código que interactúa con el ORM para contribuir o propiciar a que éste genere SQL óptimo.
Como usted ya puede suponer si leyó los artículos anteriores de esta serie, la principal desventaja del uso de ORMs es que uno tiende a desentenderse y, en consecuencia, desconocer la magia generada por el ORM para consultar y persistir datos en el RDBMS, dando por hecho que éste no sólo será capaz de cumplir con las acciones requeridas sino de hacerlo de forma eficiente. Esto es un grave error en aplicaciones complejas en las que el rendimiento es un factor clave. Sólo supervisando y entendiendo bien esta magia que hay por debajo de los ORMs nos permitirá optimizar el rendimiento de nuestras aplicaciones.
Para cualquier ORM, la generación eficiente de código a ejecutar sobre el RDBMS es un importante desafío. Esta problemática es conocida como “impedance mismatch”. Suponiendo que el ORM ha sido diseñado de forma eficaz, resulta que sólo mediante el uso óptimo de los objetos mapeados, el ORM será capaz de generar código SQL eficiente y sólo mediante código SQL optimizado nuestra aplicación será eficiente en términos de rendimiento e interacción con la base de datos. En resumen, el rendimiento o performance de nuestra aplicación no solo depende del ORM, sino del uso que hacemos de él.
Son problemas muy comunes en equipos de trabajo con poca experiencia en el uso de ORMs y sin ningún mecanismo de supervisión y control, el abuso en el número de conexiones establecidas con el RDMBS, el excesivo volumen de datos intercambiados o la generación de SQL ineficiente. En la parte final de este artículo describiré brevemente el típico Problema del N+1 para establecer una comparativa numérica, muy simple, entre un uso adecuado e inadecuado del ORM.
Mi recomendación en aplicaciones complejas de alto rendimiento es que se debe supervisar el código SQL generado, identificar si dicho código es óptimo y en caso contrario optimizar el código que interactúa con el ORM para contribuir o propiciar a que éste genere SQL óptimo. Aplicado al caso particular de Entity Framework con uso de LINQ, la optimización del código SQL generado implicaría la optimización del código LINQ aplicado sobre las entidades correspondientes.
Leave a Comment