如何在使用chunked响应时禁用chrome缓存

时间:2012-05-25 08:31:07

标签: php flush chunked

<?php
echo 'first<br>';
ob_flush();
flush();
file_get_contents("http://ttt.tt");
echo "second";

http://ttt.tt无法访问。所以在浏览器中我们可以看到输出“first”然后等待“30s”/ 每个脚本的最大执行时间 /将输出“second”。 在IE,FF,它工作正常。
但是在chrome中,“first”&amp;&amp; “第二个”将一起输出。

我的英语很糟糕。我不知道你是否理解。帮助!!!

我也试图像这样禁用浏览器的缓存:
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

但问题仍然存在..

3 个答案:

答案 0 :(得分:1)

您无需禁用缓存。这都是关于内容类型编码的。我只是做了:

header('Content-Type: text/html; charset=UTF-8');

最初是:

header('Content-Type: text/html');

......哪些不起作用。指定“ charset = UTF-8 ”会立即强制Chrome呈现分块响应。

答案 1 :(得分:0)

问题可能是“Pragma:no-cache”每次都没有工作。 HTTP规范没有为Pragma响应头设置任何准则。尝试使用“过期”。

如果您需要其他信息,请参阅link to web caching tutorial

答案 2 :(得分:0)

一种选择是添加X-Content-Type-Options: nosniff

有关详细说明,请参见Chunked transfer encoding - browser behavior