Por que um navegador em uma conexão lenta mostra o HTML bruto (em vez de interpretá-lo)?

1

Eu tenho alguns relatos de pessoas vendo o HTML bruto em seu navegador (em vez de seu navegador interpretá-lo). Parece acontecer em conexões lentas. Quando isso acontece, se o usuário recarrega a página, a página é interpretada corretamente. Há alguma coisa específica do servidor que faria com que isso acontecesse? Estamos usando o PHP 5.1.6 e o Apache 2.2.3.

    
por wherestheph 21.08.2009 / 01:10

2 respostas

1

Dois cenários possíveis vêm imediatamente à mente:

  1. Por "html bruto", se você quer dizer "interpretado, mas não estilizado", isso geralmente acontece com páginas projetadas estritamente com CSS para fazer todo o estilo, porque a folha de estilo só é baixada após o html foi carregado. O que você pode querer tentar é incorporar alguns estilos básicos inline na seção de cabeçalho html, o que, pelo menos, significaria que a página pareceria "aceitável" até que o código restante da folha de estilo tenha sido baixado. E se a folha de estilo nunca chegar ao cliente no primeiro carregamento, mesmo depois de esperar pacientemente, talvez você queira aumentar o tempo limite de conexão, o que pode estar impedindo o download de todos os arquivos para exibir a página corretamente. / p>

  2. Por "raw html", você realmente quer dizer "texto simples não-interpretado e não estilizado com tags DOCTYPE e html visíveis", então pode ser um caso ainda mais crônico do que eu descrevi acima, ou que seu script PHP pode ser configurado para liberar o buffer de resposta para o cliente antes que o html seja completamente gerado (no entanto, mesmo nesse caso, a maioria dos navegadores ainda fará uma tentativa razoável de interpretar o HTML).

Eu vou dormir e se mais alguma ideia me vier à mente antes que alguém encontre algo mais concreto, atualizarei minha resposta de acordo

    
por 21.08.2009 / 02:16
1

A razão usual para tal problema, que vi trabalhando com o Drupal, que usa PHP, é uma mensagem de erro que acontece e é enviada muito cedo, antes que o <!DOCTYPE html> ou <html> seja escrito na saída. Então, o navegador provavelmente interpretará a saída como texto simples, já que não viu uma tag com caracteres X no início do documento. (Ele normalmente irá pular uma certa quantidade de dados, eu vejo um feed RSS que começaria com o que seria parecido com 2 bytes aleatórios, o primeiro poderia ser zero, e o Firefox ainda estava feliz, seria apenas ignorar esses bytes !)

Uma solução para evitar esse problema (supondo que seja o problema) é garantir que o ambiente de produção não imprima erros do PHP no buffer de saída. Existem configurações no php.ini - embora saiba que elas podem ser substituídas no código PHP:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
    
por 13.02.2016 / 23:00

Tags