如何在使用分块响应时禁用 Chrome 缓存


how to disable chrome cache when use chunked response

<?php

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

因此,在浏览器中我们可以看到输出"first",然后等待"30s"/每个脚本的最大执行时间/将输出"second"。http://ttt.tt在IE、FF中,它工作正常。
但在 Chrome 中,"first"&& "second"将一起输出。

我的英语不好,我不知道你是否理解.帮助!!

我还尝试像这样禁用浏览器的缓存:

header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");

但问题仍然存在。

您无需禁用缓存。这一切都与内容类型编码有关。我所做的只是:

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

最初是:

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

。这行不通。指定"charset=UTF-8"会立即强制 Chrome 呈现分块响应。

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

如果需要其他信息,请参阅指向 Web 缓存教程的链接。

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

有关详尽的说明,请参阅分块传输编码 - 浏览器行为。