Como corrigir o problema de troca de imagem no iOS 8 com o keep-alive + HTTP Pipe-lining?

9

Desde o iOS8, os sites que eu gerenciei estão passando por um problema intermitente no qual as imagens estão trocando locais com outras imagens. Isso foi mencionado em vários lugares, mas sem solução aparente:

link

link

link

é um problema no iOS5 no passado. Nosso servidor está executando o Lightspeed com forro de tubulação e keep-alive. Meu administrador do servidor confirmou que o forro de tubulação está retornando ativos na ordem em que foram solicitados. Ele mencionou que desativar o keep-alive pode resolver o problema, mas aumentaria maciçamente a carga do servidor, o que seria uma coisa muito ruim.

Todos os meus recursos também estão passando o tamanho do conteúdo corretamente.

Estou realmente em um beco sem saída agora para uma solução para isso. Com muitos dos meus usuários usando o iOS, está começando a ser extremamente frustrante para todos.

Isso só começou a ocorrer com a introdução do iOS8, que tem algumas mudanças muito pesadas no Safari. Em cada lançamento, de 8, o problema ainda está lá. Como eu disse, é intermitente e nossos usuários estão começando a nos culpar como "nenhum outro site tem o problema".

Eu estava me perguntando se alguém poderia lançar alguma luz sobre isso? Alguém mais passou por esse problema e / ou encontrou uma solução?

Aqui é um link para o meu site em questão.

    
por David 16.03.2015 / 10:21

4 respostas

0

usando o protocolo http / 2 parece ter resolvido o problema no meu caso. Mas tenho certeza de que pode haver uma correção / solução real para esse problema.

    
por 19.05.2016 / 12:36
2

Tivemos esse problema também e a solução para nós foi remover todas as tags em nosso HTML e usar as classes css com a propriedade background em seu lugar. Aqui está um exemplo:

.img_logo {
  background: url(../images/logo.png?v=20150427) no-repeat;
  width: 175px;
  height: 49px;
  display: block;
}

Parece um pouco estranho, eu sei, mas essa foi a única maneira que resolveu o problema para nós. Uma desvantagem é que nós tivemos que remover o "alt" para as imagens, mas eu acho que você pode resolver isso com algum javascript, se necessário.

Espero que isso ajude!

    
por 11.05.2015 / 14:07
2

Eu estava lidando com essa questão em um novo site que acabamos de lançar. Tudo parecia bom em FF / Opera / Chrome, etc, mas eu tinha problemas de troca de imagem MAJOR no iOS8 +. Percebi que muitos dos sites que relatam esse problema executam o servidor da Web Litespeed. Eu mudei para o Apache por um momento para testar, e com certeza, o site carregou muito bem. Meu host (wiredtree.com, excelente serviço) e eu olhei para algumas das opções de configuração no Litespeed, e desativei estas duas opções:

  • Ativar compactação
  • Ativar compactação dinâmica

Depois de desativar os dois, os sites foram carregados sem problemas. Demorou um desempenho muito ligeiro, mas definitivamente vale a pena.

Primeiramente, tentamos desativar o keep-alive para desativar efetivamente o Pipelining HTTP, mas isso não resolveu o problema. O texto acima é a única coisa que vi que ofereceu uma solução real.

Espero que isso ajude alguém a lidar com os mesmos problemas!

    
por 23.06.2015 / 16:41
1

Não é uma resposta, mas uma abordagem para resolver o problema:

  1. Reproduza o problema sozinho usando uma versão de desenvolvimento do aplicativo usando os servidores da Web em produção. Apenas certifique-se de cobrir isso.
  2. Crie uma nova entrada hostname / CNAME e o host virtual correspondente no servidor da Web ou, se necessário, para a etapa 3, um servidor HTTP separado em uma porta separada. Isso é conhecido como "servidor HTTP de teste"
  3. Aponte sua versão de teste / desenvolvimento para este novo servidor HTTP e reproduza o problema. Não vá para o passo 4 até que você possa fazer isso!
  4. Agora neste servidor HTTP de teste, seja através de redirecionamentos ou configuração inteligente (possível com o Apache), desative keepalives, compressão, https, caching, pipelining e qualquer outra coisa que você possa imaginar. Reproduza o problema e anote todas as tuplas de configuração que fazem isso e aquelas que não o fazem.
  5. Troque o servidor Litespeed pelo Apahce. Novamente, deve ser bem trivial para um bom administrador de sistema. ( ahem ). Reproduza o problema.

Se você conseguir reproduzir o problema durante todo o passo 5 e nenhum conjunto de alterações de configuração ou de software do servidor fizer a diferença, o problema é iOS e provavelmente nada que você possa fazer. (Mas isso é improvável.)

Se, no entanto, houver um conjunto de alterações de configuração que não dependam do Litespeed (ou seja, ocorre também com o Apache), podemos fazer uma alternativa: Use as diretivas BrowserMatch para detectar o particular (conjunto de) navegadores; defina os parâmetros de configuração para este conjunto de BrowserMatch. Você encontrará exemplos desse tipo de coisa desde os navegadores IE 3.0 e Netscape.

Se o problema for o Litespeed, use a abordagem acima e registre um bug com o suporte do Litespeed. Você está pagando por apoio, não é?

    
por 15.04.2015 / 19:13