Solução de otimização de desempenho do iOS - otimização de rede fraca

1. Configuração fraca do ambiente de rede do iPhone

 

Selecione o status da rede existente

Ou personalize o status da rede

Configurando parâmetros:

O significado de cada parâmetro é aproximadamente o seguinte:

em largura de banda: largura de banda de downlink

na perda de pacotes: taxa de perda de pacotes no downlink

em atraso: atraso de downlink (ms)

largura de banda de saída: largura de banda upstream

perda de pacotes: taxa de perda de pacotes de uplink

atraso de saída: atraso de uplink

Atraso de DNS: Atraso na resolução de DNS. O Android não sabe como simular esta função.

protocolo: Protocolo - opcional Qualquer, IPv4, IPv6

interface: interface - opcional ALL, WLAN, celular

2. Plano de otimização

1. Apresentação de status necessária

1.1. Sem solicitação de rede

Monitore as alterações de status da rede, AFNetworkReachabilityStatus disponível de AFNetworking.
Quando não há status de rede, o usuário é notificado.

1.2. Antes de carregar a solicitação de rede, adicione "Carregando animação"

Como MBProgressHUD

1.3. Depois de carregar a solicitação de rede, você precisa remover a animação do status da rede e adicionar processamento de dados vazio. (Determine se é devido à rede ou falta de dados)

1.4. Faça bom uso das notificações de mudança de status para fazer diferentes alterações na interface.

Faça diferentes interruptores de diagrama de estado ou interruptores interativos em diferentes redes, como 2G, 3G, 4G, 5G, WiFi, etc.

2. Otimização de solicitação de rede

2.1 . Defina o tempo limite mais apropriado

Desenvolva diferentes planos de cálculo para o tempo limite total de leitura e gravação (tempo limite da solicitação até a resposta), tempo limite do primeiro pacote e tempo limite do pacote (tempo limite entre dois segmentos de dados) para acelerar o julgamento do tempo limite, reduzir o tempo de espera e reiniciar assim que possível tentar. O tempo limite aqui também pode ser definido dinamicamente de acordo com o status da rede. Por exemplo, diferentes tempos limite podem ser definidos quando o status da rede for 2G, 3G, 4G, 5G e WiFi.

Permite que os usuários cancelem operações de rede lentas ou de longa duração.

2.2 . "Atraso" de solicitações de vários submódulos

Com base no princípio de que a tolerância de espera do usuário não excede 2 segundos, se vários módulos de negócios, como a página inicial, forem apresentados juntos, ele esperará muito tempo se todos os dados da interface forem solicitados de uma vez, portanto, vários submódulos pode ser segmentado. Solicitação de atraso".

  • Módulo prioritário: A quantidade de dados solicitados é pequena e o negócio precisa ser exibido primeiro.
  • Módulo de atraso: Grande quantidade de dados, vários dados semelhantes a uma lista, adequado para colocar animações de carregamento, a duração é altamente aceitável para os usuários, portanto, além de ser colocado no final, pode ser usado para processamento de paginação e atraso processamento de carregamento após deslizar.

2. 3. Adicionar mecanismo de cache ou mecanismo de atualização incremental a módulos fixos

Dados de cache na página inicial e páginas específicas de primeiro nível. Os dados podem ser lidos diretamente do cache quando solicitados novamente dentro de um determinado período de tempo, o que também pode evitar que páginas em branco afetem a experiência.
Ou julgue se há alterações incrementais nos dados. Em caso afirmativo, atualize os dados com base na inserção de animação.

2. 4. Operação de recarga de vários módulos

Como algumas páginas complexas com vários módulos e correlações entre módulos, vários módulos terão múltiplas solicitações. Quando uma solicitação falha e um botão "recarregar" precisa ser adicionado, é recomendado que todas as solicitações sejam solicitadas novamente para evitar correlação entre módulos. Os dados estão desviados ou o layout da IU está desordenado.
Portanto, se houver uma operação de botão/suspenso que recarrega após uma falha na solicitação de rede, a sugestão é:

  • Vários módulos solicitam novamente.
  • Recalcular UI complexa.

A razão é: em um ambiente de rede fraco, os dados solicitados podem não estar completos. Múltiplas solicitações podem obter apenas parte dos dados. Na maioria dos casos, cada módulo se complementa.

2.5. Configuração de pré-carga "valor crítico"

Com base na posição atual do UITableView, divida-a pela altura atual de todo o UITableView.contentView para determinar se uma solicitação de rede precisa ser iniciada: quando 70% da página atual for cruzada, novos recursos serão solicitados e os dados serão carregados ;

2. 6. Comece com a ação de solicitar

Otimizar consultas DNS: As consultas DNS devem ser reduzidas tanto quanto possível, o cache DNS deve ser feito para evitar o sequestro de nomes de domínio e a poluição do DNS, e os usuários devem ser agendados para o "ponto de acesso ideal".
Reduza o tamanho do pacote de dados e otimize o volume do pacote: Reduza o tamanho e o volume do pacote de dados por meio de compactação, simplificação de cabeçalhos de pacote, mesclagem de mensagens, etc.
Otimize pacotes ACK: equilibre o número de pacotes redundantes e pacotes ACK para reduzir a latência e melhorar o rendimento.

2. 7. Desconexão e reconexão

Existem muitos motivos pelos quais uma conexão de dados pode ser perdida em uma rede sem fio. CDN pode ser usado aqui.
(CDN é uma rede de distribuição de conteúdo distribuída construída em uma rede de dados. O papel do CDN é usar a tecnologia de cluster de servidores de mídia de streaming para superar as deficiências de largura de banda de saída insuficiente e capacidades de simultaneidade de um sistema de máquina única, e pode melhorar muito o simultâneo fluxos suportados pelo sistema. número para reduzir ou evitar os efeitos adversos da falha de ponto único.)

2. 8. Reduza o número de tempos de criação de conexões de dados

Como a criação de uma conexão é uma operação muito cara, o número de tempos de criação de conexões de dados deve ser reduzido tanto quanto possível e as tarefas devem ser executadas em lotes em uma solicitação. Se você enviar pequenos pacotes de dados várias vezes, tente garantir que eles sejam enviados em 2 segundos. Ao acessar diferentes servidores em um curto período de tempo, reutilize ao máximo as conexões sem fio.

3. Otimização da experiência do usuário

3. 1. O conteúdo é exibido em ordem.

Por exemplo, se um módulo de negócios tiver texto e imagens, o carregamento poderá travar entre 50% e 90%, portanto, o texto é carregado primeiro e depois as imagens são carregadas.

3. 2. Impulsionado pelo progresso

Independentemente das condições da rede, o progresso do carregamento sempre começa em 50% e permanece em cerca de 98%.

3.3. Layout de exibição da IU corrigido, a visualização do layout virtual pode ser pré-carregada ao carregar

Semelhante ao Zhihu, ao carregar, a "animação/visualização de carregamento" é alterada para exibir a imagem de espaço reservado pré-carregada na página principal.

3. 4. Para falha de carregamento de rede fraca/dados vazios, um botão "recarregar" pode ser adicionado ou uma operação de atualização suspensa pode ser adicionada

Por exemplo: se a solicitação não apresentar falha de dados/rede, adicione um botão ‘recarregar’ para alertar os usuários de que estão em um estado “controlável” e reduzir a ansiedade do usuário.

4. Otimização do carregamento de imagens

4.1. Use formatos de imagem mais rápidos

A rigor, não é uma otimização em redes fracas, mas um formato de imagem mais rápido é muito importante! Recomenda-se usar o formato WebP aqui. (Formato WebP, um formato de imagem desenvolvido pelo Google para acelerar o carregamento de imagens. O volume de compactação da imagem é apenas cerca de 2/3 do JPEG e pode economizar muitos recursos de largura de banda do servidor e espaço para dados. Mas WebP é uma compactação com perdas. Codificação Arquivos WebP da mesma qualidade requerem mais recursos de computação do que a codificação de arquivos JPEG.)

4. 2. Apresentar gráficos com precisão diferente de acordo com o status da rede

Por exemplo (para a imagem original é 600X480):

  • 2/3G usa imagens de baixa definição: envie imagens 300X240 com precisão de 80;
  • As imagens de resolução normal 4G são entregues em 600X480 com uma precisão de 80;
  • Imagens WiFi de alta definição (é melhor julgar com base na velocidade da rede, o WiFi também pode ser lento): Envie fotos 600X480 com uma precisão de 100.

4.3 , Opções de parâmetro SDWebImage

De acordo com o cenário de uso, consulte a descrição da constante SDWebImageOptions para carregar a imagem.

4.4 . Não carregue imagens

No caso de uma rede fraca, se o funcionamento não for afetado e o usuário puder ser informado do conteúdo da área por meio de uma simples descrição de texto, a imagem poderá não ser carregada até que a rede esteja estável antes de carregar a imagem. Claro, este método depende da situação, ou geralmente você pode adicionar um botão "Não exibir imagens com status de rede fraco" nas opções de configuração do APP.

Acho que você gosta

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