Andorid performance optimization (8) optimización de solicitud de red

1 Introducción

Hoy en día, Internet móvil está en auge y casi todas las aplicaciones de nuestros teléfonos deben estar conectadas. La mejora del hardware del teléfono móvil y el bajo precio, así como la reducción y aceleración de los costos de tráfico del operador, hacen que la sensibilidad de los usuarios a la espera de solicitudes de red y el consumo de tráfico también disminuyan. Aun así, no se pueden ignorar los problemas de red en el desarrollo de una aplicación en sí misma. Por ejemplo, cuando siempre hay tráfico insuficiente, en un escenario donde el estado de la red no es bueno, y cuando el teléfono móvil tiene poca energía, una aplicación excelente puede ser obvia Vea las ventajas, por lo que la optimización de la red también es un elemento de optimización indispensable en nuestra optimización de aplicaciones.

2 El proceso de una solicitud de red

La investigación muestra que cualquier retraso de más de un segundo interrumpirá el estado mental del usuario y traerá una mala experiencia. Como se menciona en la documentación de desarrollo de Google, cómo representar una página en un segundo, como se muestra en la siguiente figura, aquí hay un buen análisis de los pasos a seguir para representar una página en una solicitud de red.

El primero es la resolución DNS IP, 200 ms

El segundo es la conexión de protocolo de enlace de tres vías TCP, 200 ms

El tercero es el servidor de solicitud HTTP del cliente y el servidor responde, 200 ms

El cuarto es que el servidor en sí tarda un tiempo en responder, 200 ms

Quinto, el cliente recibe el contenido para analizar html, css, js, etc. y renderizar, 200 ms

Lo anterior es una solicitud HTTP. Si se trata de una solicitud HTTPS, se agregará un protocolo de enlace TLS después de la conexión de protocolo de enlace de tres vías TCP, de modo que el tiempo de protocolo de enlace será más largo.

3 consejos de optimización de solicitud de red

3.1 Optimización de resolución DNS

Pre-resolución de DNS

Si estamos desarrollando una página web, podemos considerar la resolución previa de DNS. La resolución previa es en realidad resolver la existencia de diferentes nombres de dominio en la página web actual y resolver previamente el DNS en IP antes de que ocurra el comportamiento del usuario.

Reemplace el nombre de dominio directamente con la dirección IP

De acuerdo con los requisitos comerciales específicos, puede usar la conexión IP directa para reemplazar el método de acceso al nombre de dominio, o debe usar la IP para intentar acceder, si el acceso falla y volver al nombre de dominio, para lograr solicitudes de red más rápidas. Sin embargo, este comportamiento generalmente no se recomienda porque es inflexible y el costo de mantenimiento es extremadamente alto.

3.2 Reduce la cantidad de transmisión de datos

Considere el uso de búferes de protocolo

Protocol Buffers es un lenguaje de descripción de datos desarrollado por Google. Similar a Json / XML, puede serializar datos estructurados y puede usarse para el almacenamiento de datos y protocolos de comunicación. Es más pequeño que el volumen de datos Json utilizado actualmente, pero para usarlo, el cliente necesita hacer referencia a una biblioteca de análisis de varios cientos de K.

Considere usar FlatBuffers

FlatBuffers es también una herramienta de serialización multiplataforma desarrollada por Google. Proporciona compatibilidad con la interfaz C ++ / Java / Go / C #, que es una biblioteca de serialización que se centra en el rendimiento y el uso de recursos. En comparación con los Protocol Buffers, que son más adecuados para dispositivos móviles, FlatBuffers proporcionan un mayor rendimiento y menores requisitos de recursos. La función de FlatBuffers es muy similar a la de Protocol Buffers. Su mayor diferencia es que antes de usar datos específicos, FlatBuffers no requiere el proceso de análisis / desempaquetado. Al mismo tiempo, cuando se usa en ingeniería, FlatBuffers es mucho más conveniente que Protocol Buffers, y solo necesita incluir dos o tres archivos de encabezado.

Use zip para la compresión de datos

Una vez que hayamos decidido qué lenguaje de descripción de datos usar, como el Json más utilizado, podemos eliminar los espacios y usar zip para empacarlo y comprimirlo. Dicha compresión puede reducir en gran medida el volumen de datos original. El tamaño de la velocidad de acceso se puede mejorar. Por ejemplo, el autor una vez intentó formatear un Json con más de cien kilos, y después de eliminar espacios, se convirtió en solo 50K, y luego comprimido y comprimido por zip, se convirtió en solo 5K.

Usa la compresión Gzip

El protocolo HTTP admite la codificación Gzip, que es una tecnología utilizada para mejorar el rendimiento de las aplicaciones WEB. Se utiliza para reducir la cantidad de datos transferidos y el tamaño de los datos transferidos. Gzip es de alta presión y puede comprimir archivos a tamaños más pequeños. Pero no todos los navegadores admiten gzip. Si el cliente admite la compresión gzip, el recurso solicitado se comprime y se devuelve al cliente cuando responde. El navegador lo analiza a su manera. En el encabezado de respuesta http, podemos ver el contenido -coding: gzip, esto se refiere al método de compresión utilizado por el servidor gzip.

Compresión de imagen

El uso de herramientas de origen, guetzli o tinypng puede comprimir la imagen con un alto grado de reducción.

Use el formato WebP

La misma foto, usando el formato WebP puede reducir en gran medida el tamaño de las imágenes pequeñas y ahorrar tráfico, puede considerar usar el formato de imagen WebP en lugar del formato de imagen JPEG o PNG. Lo más importante es que la calidad de la imagen no ha cambiado después de usar WebP.

3.3 Reducir solicitudes de red o solicitudes previas

Combine la interfaz de las solicitudes de red personalizadas para reducir el número de solicitudes tanto como sea posible, y combine las solicitudes que se pueden combinar tanto como sea posible.

Por ejemplo, alguna lógica de informes puede almacenar los datos que deben informarse varias veces localmente y elegir un momento adecuado para cargarlos de una vez.

Haga algunas solicitudes de datos importantes por adelantado cuando el teléfono esté inactivo para mejorar la experiencia del usuario.

3.4 Solicitud razonable, reducir el reintento y evitar encuestas

1 De acuerdo con los requisitos comerciales específicos cuando está en segundo plano, limite estrictamente si la aplicación necesita continuar realmente necesitando la transmisión de datos cuando está en segundo plano e intente evitar la transmisión de datos no válidos.

2 Es necesario evitar una conexión de reintento cíclico sin restricciones cuando la solicitud de red falla. Puede establecer un número máximo de reconexiones, finalizar la reconexión después de exceder el número de veces o esperar mucho tiempo antes de intentar conectarse nuevamente. Y antes de volver a conectar, asegúrese de que la red esté en condiciones normales, de lo contrario, además de no volver a intentarlo correctamente, se agrega una cancelación adicional. Cuando la solicitud en algunas páginas falla, el resultado de la solicitud se puede enviar al usuario para permitirle determinar si debe volver a solicitar de acuerdo con su propia situación.

3 Las funciones de servicio normales también deben evitar el sondeo para iniciar solicitudes de red al servidor. Para determinar la frecuencia de transmisión de datos, para evitar la transmisión redundante y repetida de datos. O use push para reemplazar tanto como sea posible.

3.5 Usar caché

Para datos como imágenes y archivos, puede usar el mecanismo de estrategia de caché de memoria más caché de disco. En Android, es típico usar LruCache para implementar el almacenamiento en caché de memoria y DiskLruCache para implementar el almacenamiento en caché de disco. O utilice un marco de código abierto más maduro para una solicitud de red efectiva y procesamiento de caché.

3.6 Procesamiento para diferentes tipos de red

Antes de solicitar una imagen, primero puede obtener el tipo de red actual. Si es Wifi, disfrute de la experiencia avanzada que brindan las imágenes de alta definición. Si se trata de una red 4G, elija una imagen estándar y clara para entregar. Si se trata de una red 2 / 3G. Luego, considere enviar imágenes con una definición pobre para lograr la prioridad para el uso normal.

4 Use herramientas para monitorear la red

4.1 Charles

Charles es una poderosa herramienta de monitoreo de la red. Siempre que el teléfono móvil y la computadora estén conectados a la misma red y se establezcan algunas configuraciones de proxy correspondientes, los datos de solicitud del teléfono móvil pueden capturarse a través de la computadora. Los pasos de la operación son los siguientes:

El primer paso es abrir la ventana Configuración de proxy.

El segundo paso es marcar la opción Habilitar proxy transparente HTTP y establecer el número de puerto, que es 8888 de forma predeterminada.

El tercer paso es ingresar la dirección IP en la computadora y el número de puerto que acaba de configurar en la selección Wifi del teléfono móvil, y luego confirmar.

El cuarto paso, después de completar la operación del teléfono móvil, aparecerá el siguiente cuadro de diálogo en la computadora, seleccione "Permitir" para permitir.

4.2 Perfil de red

El Network Profiler que viene con Android Stuido 3.0 puede mostrar actividades de red en tiempo real en la línea de tiempo, incluidos los datos enviados y recibidos y el número actual de conexiones. Esto le facilita ver cómo y cuándo la aplicación transfiere datos, y optimizar el código subyacente en consecuencia. Como se muestra en el sitio web oficial:

https://developer.android.google.cn/studio/images/profile/networkprofiler_2x.png

4.3 Establecer parámetros de red de máquina virtual para simular redes débiles

El entorno del usuario es impredeciblemente complejo, por lo que, además de la optimización normal de la red, también debemos considerar el rendimiento de la aplicación en condiciones de red débiles. A través del elemento " Celular " de la máquina virtual, se puede configurar un parámetro de red para simular una red débil para las pruebas correspondientes. Como se muestra a continuación:

Entre ellos, el tipo de red es el tipo de red; la intensidad de la señal es la intensidad de la señal; el estado de la voz es el estado de la voz; el estado de los datos es el estado de los datos. Se pueden seleccionar según sea necesario.

 

 

 

106 artículos originales publicados · elogiados 37 · 80,000 visitas

Supongo que te gusta

Origin blog.csdn.net/lyz_zyx/article/details/88324777
Recomendado
Clasificación