Redirecionamentos do cache em cache do Chrome 302

4

Eu tenho um script php usado para girar imagens de banner em um site.

Em atualizações da página do Firefox / IE, será feita outra solicitação e uma imagem diferente será retornada.

No Google Chrome, a solicitação parece estar em cache e apenas abrir a página em uma nova guia fará com que ela realmente consulte o script.

Acredito que isso costumava funcionar em versões mais antigas do Chrome, tentei alguns tipos diferentes de códigos de redirecionamento, todos com o mesmo resultado.

Alguma dica?

<img class="banner" src="/inc/banner.php" alt="">

~$ cat /var/www/inc/banner.php 
<?php

header("HTTP/1.1 302 Redirect");
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");

//header('HTTP/1.1 307 Temporary Redirect');
//header("expires: none");
//header("expires: max");
//header("Cache-Control: public");

$folder = '../img/banner/';

$exts = 'jpg jpeg png gif';

$files = array(); $i = -1;
if ('' == $folder) $folder = './';

$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) { // for each extension check the extension
if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // faster than ereg, case insensitive
$files[] = $file; // it's good
++$i;
}
}
}
closedir($handle); // We're not using it anymore
mt_srand((double)microtime()*1000000); // seed for PHP < 4.2
$rand = mt_rand(0, $i); // $i was incremented as we went along

header('Location: '.$folder.$files[$rand]); 
flush();
?>

saída de curvatura;

~$ curl -I -k https://example.net/inc/banner.php
HTTP/1.1 302 Redirect
Server: nginx/1.1.14
Date: Fri, 24 Feb 2012 03:23:46 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.3.10-1ubuntu1
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Location: ../img/banner/2.jpg
    
por Thermionix 24.02.2012 / 04:41

3 respostas

8

Bug no chrome: link

    
por 30.04.2012 / 13:51
1

Na minha página inicial, eu tinha o nome do arquivo top frames como: banner.php ele não apareceu no Google Chrome, funcionou bem em todos os outros navegadores ... Eu estava procurando por erros no código por horas, então eu mudei o nome do arquivo e o link do conjunto de quadros para mybanner.php e funcionou também no Google Chrome!

    
por 19.11.2012 / 01:31
0

De acordo com o W3C ( link ) " Esta resposta é apenas armazenável em cache se indicado por um campo de cabeçalho Cache-Control or Expires ". Tente usar um 301 "movido permanentemente"

    
por 29.09.2014 / 16:09