<?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
。
有关详尽的说明,请参阅分块传输编码 - 浏览器行为。