Chrome 缓存 302 重定向

Chrome 缓存 302 重定向

我有一个用于旋转网站上的横幅图像的 php 脚本。

在 Firefox/IE 下,页面刷新将发出另一个请求并返回不同的图像。

在 Chrome 下,请求似乎被缓存了,只有在新选项卡中打开页面才会导致它真正查询脚本。

我相信这曾经在旧版本的 Chrome 中起作用,我尝试了几种不同类型的重定向代码,结果都相同。

有小费吗?

<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();
?>

卷曲输出;

~$ 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

答案1

答案2

在我的主页上,我将顶部框架的文件名定为:banner.php,但它没有在 Google Chrome 中显示,在所有其他浏览器中都运行正常...我花了几个小时寻找代码中的错误,然后我将文件名和链接从框架集更改为 mybanner.php,它也可以在 Google Chrome 中运行!

答案3

根据 W3C (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3)”仅当 Cache-Control 或 Expires 标头字段指示时,此响应才可缓存“。尝试使用 301“永久移动”

相关内容