O meu servidor web está permitindo a pré-busca?

5

Eu tenho um site baseado em imagem que hospeda várias galerias. Quando um usuário clica em uma das imagens, a propriedade views da imagem específica é incrementada. No entanto, notei que, ao usar o Firefox (14.0.0.1), ele incrementa as visualizações duas vezes, enquanto navegadores não tão complicados, como o K-meleon, incrementam a propriedade uma vez - como deveria.

Alguém então apontou no stackoverflow que isso é provavelmente devido à pré-busca em navegadores modernos, causando o script PHP que busca a imagem do banco de dados e incrementa as visualizações para serem executadas duas vezes. Então, checando meu apache access.log, notei que o Firefox de fato solicita cada imagem duas vezes:

Firefox/14.0.1" ::1 - - [03/Aug/2012:16:41:37 +0100] "GET /imgsite/getImg.php?id=23 HTTP/1.1" 200 57362 "http://localhost/imgsite/index.php" "Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1" ::1 - - [03/Aug/2012:16:41:37 +0100] "GET /imgsite/getImg.php?id=23 HTTP/1.1" 200 57362 "-" "Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1"

Eu então li o .htaccess e tentei vários métodos de bloquear os cabeçalhos de pré-busca que o Firefox (ou chrome) envia, mas esses cabeçalhos não deveriam aparecer no snippet acima? Nada funcionou até agora. Aqui está o meu arquivo .htaccess que é colocado no caminho HTML raiz do meu site:

RewriteEngine On
RewriteCond %{HTTP:X-moz} prefetch
RewriteRule . . [F,L]

Eu tentei outras variantes mais extensas do que precede, ainda sem sucesso. Minha configuração do apache permite o .htaccess, pois a linha mod_rewrite.so está ativada.

Tudo o que vi e reescrito, não afetando nada, está me levando a acreditar que isso não é, na verdade, um problema de pré-busca.

Se alguém pudesse lançar alguma luz sobre este assunto, ficaria muito grato. Obrigado.

    
por Lee 04.08.2012 / 13:24

3 respostas

1

Eu achei esta pergunta interessante porque eu também tive alguns problemas com isso.

De acordo com este site Dicas de Pré-busca existe (pelo Firefox de qualquer maneira) um cabeçalho específico em cada requisição (X -moz: pré-busca). Este site mostra algumas maneiras de identificar esses cabeçalhos e registrá-los, bem como algumas maneiras de tentar forçar a pré-busca a se comportar de maneira um pouco mais amigável.

Pelo menos, se você puder obter as informações registradas, poderá determinar se a pré-busca está realmente causando o problema.

Ainda não experimentei nada desta página, por isso não sei se funciona ou não. Eu fiz o bookmark para alguns testes futuros. Às vezes, é muito frustrante como os navegadores com todos os recursos modernos buscam partes significativas de um site e causam pequenos problemas, como incrementar o número de visualizações. É uma coisa ótima quando você está no final do navegador, eu admito. Algo legal sobre clicar e uma exibição imediata de toda a página, gráficos e tudo mais.

Espero que esta informação possa indicar-lhe o caminho certo, pelo menos, para diagnosticar o seu problema, se não mesmo resolvê-lo! Boa sorte!

    
por 07.08.2012 / 17:01
1

Observe que, nos seus registros, a segunda solicitação não possui um campo de referência. Portanto, esses pedidos não são exatamente idênticos. Eu suspeito que a pré-busca pode ser o problema aqui.

Verifique também os cabeçalhos HTTP no arquivo? Se você estiver enviando um cabeçalho sem cache devido ao processamento do PHP, isso pode ser parte do problema. Observe que ambas as respostas são uma resposta 200 OK em vez de uma resposta 304 se seu cache estava funcionando.

Algumas ideias:

1) Execute um teste simples para confirmar que as regras de reescrita do htaccess estão sendo processadas. Poderia ser eles estão sendo ignorados.

2) Se ainda não o fez, tente:

RewriteEngine On
RewriteCond %{HTTP_X_MOZ} ^prefetch$
RewriteRule ^.*$ - [F]

3) Ondulação do usuário

curl --header "X-moz: prefetch" www.google.com

Para testar a partir da linha de comando.

Para uma boa discussão sobre os impactos de log do prefeito e outros itens nos logs, veja:

link

    
por 07.08.2012 / 21:35
0

Meus US $ 0,02, não apenas incremente cegamente em uma visualização de página, isso é uma receita para manipulação. Faça algo com base no endereço IP / hora do cliente e isso garantirá que coisas como a pré-busca não entrem em vigor.

A outra parte é não executar essa rotina se a pré-busca estiver definida no cabeçalho.

    
por 13.08.2012 / 16:03