Solución de optimización del rendimiento de iOS: optimización de red débil

1. Configuración del entorno de red débil del iPhone

 

Seleccionar el estado de la red existente

O personalizar el estado de la red

Parámetros de configuración:

El significado de cada parámetro es aproximadamente el siguiente:

en ancho de banda: ancho de banda de enlace descendente

en pérdida de paquetes: tasa de pérdida de paquetes de enlace descendente

en retraso: Retraso del enlace descendente (ms)

ancho de banda de salida: ancho de banda ascendente

pérdida de paquetes: tasa de pérdida de paquetes de enlace ascendente

retraso de salida: retraso del enlace ascendente

Retraso de DNS: Retraso en la resolución de DNS, Android no sabe cómo simular esta función.

protocolo: Protocolo: opcional Cualquiera, IPv4, IPv6

interfaz: interfaz - TODO opcional, WLAN, celular

2. Plan de optimización

1. Presentación de estado necesaria

1.1 Sin mensaje de red

Monitorear los cambios de estado de la red, disponible AFNetworkReachabilityStatus de AFNetworking.
Cuando no hay estado de red, se notifica al usuario.

1.2. Antes de cargar la solicitud de red, agregue "Cargando animación"

Como MBProgressHUD

1.3 Después de cargar la solicitud de red, debe eliminar la animación del estado de la red y agregar procesamiento de datos vacío. (Determina si es por la red o falta de datos)

1.4 Haga un buen uso de las notificaciones de cambio de estado para realizar diferentes cambios en la interfaz.

Realiza diferentes conmutadores de diagrama de estado o conmutadores interactivos en diferentes redes como 2G, 3G, 4G, 5G, WiFi, etc.

2. Optimización de solicitudes de red

2.1 Establecer el tiempo de espera más apropiado

Desarrolle diferentes planes de cálculo para el tiempo de espera total de lectura y escritura (tiempo de espera desde la solicitud hasta la respuesta), el tiempo de espera del primer paquete y el tiempo de espera del paquete (tiempo de espera entre dos segmentos de datos) para acelerar el juicio del tiempo de espera, reducir el tiempo de espera y reiniciar tan pronto como posible intento. El tiempo de espera aquí también se puede configurar dinámicamente según el estado de la red. Por ejemplo, se pueden configurar diferentes tiempos de espera cuando el estado de la red es 2G, 3G, 4G, 5G y WiFi.

Permite a los usuarios cancelar operaciones de red lentas o de larga duración.

2.2 "Retraso" de solicitudes de múltiples submódulos

Basado en el principio de que la tolerancia de espera del usuario no excede los 2 segundos, si se presentan juntos varios módulos comerciales, como la página de inicio, esperará mucho tiempo si se solicitan todos los datos de la interfaz a la vez, por lo que múltiples submódulos se puede segmentar Solicitud de "retraso".

  • Módulo de prioridad: la cantidad de datos solicitados es pequeña y la empresa debe mostrarse primero.
  • Módulo de retraso: gran cantidad de datos, múltiples datos similares a una lista, adecuados para colocar animaciones de carga, la duración es muy aceptable para los usuarios, por lo que además de colocarse en la parte posterior, se puede usar para el procesamiento de paginación y retrasar Procesamiento de carga después del deslizamiento.

2. 3. Agregar mecanismo de almacenamiento en caché o mecanismo de actualización incremental a módulos fijos

Datos de caché en la página de inicio y páginas específicas de primer nivel. Los datos se pueden leer directamente desde el caché cuando se solicitan nuevamente dentro de un cierto período de tiempo, lo que también puede evitar que las páginas en blanco afecten la experiencia.
O juzgue si hay cambios incrementales en los datos y, de ser así, actualice los datos bajo la premisa de insertar animación.

2. 4. Operación de recarga de múltiples módulos

Al igual que algunas páginas complejas con múltiples módulos y correlaciones entre módulos, varios módulos tendrán múltiples solicitudes. Cuando una solicitud falla y es necesario agregar un botón de "recargar", se recomienda volver a solicitar todas las solicitudes para evitar la correlación entre módulos. Los datos están desviados o el diseño de la interfaz de usuario está desordenado.
Entonces, si hay una operación de botón/desplegable que se recarga después de que falla una solicitud de red, la sugerencia es:

  • Varios módulos lo solicitan nuevamente.
  • Recalcular la interfaz de usuario compleja.

La razón es: en un entorno de red débil, los datos solicitados pueden no estar completos, es posible que varias solicitudes solo obtengan parte de los datos y, en la mayoría de los casos, cada módulo se complementa entre sí.

2.5 Configuración de precarga "valor crítico"

Según la posición actual de UITableView, divídalo por la altura actual de todo UITableView.contentView para determinar si es necesario iniciar una solicitud de red: cuando se ha cruzado el 70% de la página actual, se solicitan nuevos recursos y se cargan datos ;

2. 6. Comienza con la acción de solicitar

Optimice las consultas de DNS: las consultas de DNS deben reducirse tanto como sea posible, se debe realizar el almacenamiento en caché de DNS para evitar el secuestro de nombres de dominio y la contaminación de DNS, y los usuarios deben programarse en el "punto de acceso óptimo".
Reduzca el tamaño de los paquetes de datos y optimice el volumen de los paquetes: reduzca el tamaño y el volumen de los paquetes de datos mediante la compresión, la optimización de los encabezados de los paquetes, la combinación de mensajes, etc.
Optimice los paquetes ACK: equilibre la cantidad de paquetes redundantes y paquetes ACK para reducir la latencia y mejorar el rendimiento.

2. 7. Desconexión y reconexión

Hay muchas razones por las que se puede perder una conexión de datos en una red inalámbrica. CDN se puede utilizar aquí.
(CDN es una red de distribución de contenido distribuido construida sobre una red de datos. La función de CDN es utilizar la tecnología de clúster de servidores de medios de transmisión para superar las deficiencias del ancho de banda de salida insuficiente y las capacidades de concurrencia de un sistema de una sola máquina, y puede mejorar en gran medida la concurrencia número de flujos admitidos por el sistema para reducir o evitar los efectos adversos de una falla de un solo punto).

2. 8. Reducir el número de tiempos de creación de conexiones de datos

Dado que crear una conexión es una operación muy costosa, la cantidad de tiempos de creación de conexiones de datos debe reducirse tanto como sea posible y las tareas deben realizarse en lotes en una sola solicitud. Si envía paquetes de datos pequeños varias veces, debe intentar asegurarse de que se envíen en 2 segundos. Al acceder a diferentes servidores en un corto período de tiempo, reutilice las conexiones inalámbricas tanto como sea posible.

3. Optimización de la experiencia del usuario

3. 1. Los contenidos se muestran en orden.

Por ejemplo, si un módulo comercial tiene texto e imágenes, la carga puede detenerse entre el 50% y el 90%, por lo que primero se carga el texto y luego las imágenes.

3. 2. Impulsado por el progreso

Independientemente de las condiciones de la red, el progreso de la carga siempre comienza en un 50 % y permanece en aproximadamente un 98 % de progreso.

3.3. Diseño de visualización de la interfaz de usuario fijo, la vista de diseño virtual se puede precargar al cargar

De manera similar a Zhihu, al cargar, la "animación/vista de carga" se cambia para mostrar la imagen del marcador de posición precargada en la página principal.

3. 4. Para fallas de carga de red débiles/datos vacíos, se puede agregar un botón "recargar" o se puede agregar una operación de actualización desplegable

Por ejemplo: si la solicitud no tiene fallas de datos o de red, agregue un botón de "recargar" para que los usuarios sepan que se encuentran en un estado "controlable" y reduzca la ansiedad del usuario.

4. Optimización de la carga de imágenes

4.1 Utilice formatos de imagen más rápidos

Estrictamente hablando, no se trata de una optimización en una red débil, ¡pero un formato de imagen más rápido es realmente importante! Se recomienda utilizar el formato WebP aquí. (Formato WebP, un formato de imagen desarrollado por Google para acelerar la carga de imágenes. El volumen de compresión de imágenes es solo aproximadamente 2/3 del JPEG y puede ahorrar muchos recursos de ancho de banda del servidor y espacio de datos. Pero WebP es una compresión con pérdida. Codificación Los archivos WebP de la misma calidad requieren más recursos informáticos que codificar archivos JPEG).

4. 2. Presentar gráficos con diferente precisión según el estado de la red.

Por ejemplo (para la imagen original es 600X480):

  • 2/3G utiliza imágenes de baja definición: envía imágenes de 300X240 con una precisión de 80;
  • Las imágenes de resolución normal 4G se entregan a 600X480 con una precisión de 80;
  • Imágenes de alta definición WiFi (es mejor juzgar según la velocidad de la red, el WiFi también puede ser lento): envíe imágenes de 600X480 con una precisión de 100.

4.3 , opciones de parámetros SDWebImage

Según el escenario de uso, consulte la descripción constante de SDWebImageOptions para cargar la imagen.

4.4 No cargar imágenes

En el caso de una red débil, si la operación no se ve afectada y el usuario puede ser informado del contenido del área a través de una simple descripción de texto, es posible que la imagen no se cargue hasta que la red esté fluida antes de cargar la imagen. Por supuesto, este método depende de la situación, o generalmente puedes agregar un botón "No mostrar imágenes en un estado de red débil" en las opciones de configuración de la APLICACIÓN.

Supongo que te gusta

Origin blog.csdn.net/baidu_33298752/article/details/130947086
Recomendado
Clasificación