Php 防止HTTP流中响应的本地缓存

Php 防止HTTP流中响应的本地缓存,php,javascript,apache,caching,xmlhttprequest,Php,Javascript,Apache,Caching,Xmlhttprequest,我正在尝试将从文件读取的数据流传输到chrome客户端。我能够成功地流式传输数据,但我的响应正在被缓存,我希望防止这种情况发生。这种情况之所以存在,是因为我的平面文件包含相互独立的数据项,我希望以同样的方式处理它们。例如,我的文件包含: {空闲时间:94125387364,系统时间:98954710321,用户时间:3683963615} {空闲时间:94125387789,系统时间:98954710456,用户时间:3683963845} {空闲时间:94125387876,系统时间:9895

我正在尝试将从文件读取的数据流传输到chrome客户端。我能够成功地流式传输数据,但我的响应正在被缓存,我希望防止这种情况发生。这种情况之所以存在,是因为我的平面文件包含相互独立的数据项,我希望以同样的方式处理它们。例如,我的文件包含:

{空闲时间:94125387364,系统时间:98954710321,用户时间:3683963615} {空闲时间:94125387789,系统时间:98954710456,用户时间:3683963845} {空闲时间:94125387876,系统时间:98954710678,用户时间:3683963986}

因此,与其 {空闲时间:94125387876,系统时间:98954710678,用户时间:3683963986} 第三条 作为xmlhttprequest.responsetext,我收到

{idle_time:94125387364,system_time:98954710321,user_time:3683963615} <br/>
{idle_time:94125387789,system_time:98954710456,user_time:3683963845} <br/>
{idle_time:94125387876,system_time:98954710678,user_time:3683963986}
注意:我不担心特征线标记和空格

我的PHP脚本如下所示, test.php

我的html页面如下所示: Home.htm


尝试将其添加到php文件的顶部

header("Expires: Sun, 20 Jan 1985 00:00:00 GMT"); // date in the past
header("Cache-Control: no-cache");
header("Pragma: no-cache"); 

使用此选项强制不缓存:

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

确保在发送任何输出之前调用此函数。

您无法避免responseText发生的问题。Http流的本质不是本地的,任何缓存都会导致这种情况发生。我发现了一篇很好的文章,其中陈述了我的情况以及解决方案

文章是

下面一段包含了我的情况以及解决方法


XMLHttpRequest的responseText属性始终包含从服务器中清除的内容,即使连接仍然打开。因此,浏览器可以运行定期检查,例如查看其长度是否已更改。不过,一个问题是,一旦刷新,服务就无法撤消其输出的任何内容。例如,计时器服务产生的responseText字符串可能如下所示:12:00:00 12:01:05 12:01:10,而理想情况下,它应该是12:00:00,然后是12:01:05,然后是12:01:10。解决方案是解析响应字符串,只查看最后一个值。更准确地说,是最后一个完整值,因为文本可能以部分结果结尾。这种技术的一个例子就是这样工作的。为了简化解析,服务输出每个由特殊标记分隔的消息,@END@XML标记将是另一种方法。然后,可以运行一个正则表达式来获取最新消息,该消息后面必须有该标记,以确保消息完整

我更改了php代码,但问题仍然存在。您可以看到有问题的更改代码。请求页面时,浏览器中的标题是什么?请求标题:POST/Dashboard/test.php HTTP/1.1主机:localhost:8080连接:保持活动内容长度:0来源:用户代理:Mozilla/5.0 Windows NT 6.1;WOW64 AppleWebKit/535.19 KHTML,如Gecko Chrome/18.0.1025.162 Safari/535.19接受:/Referer:Accept编码:gzip,deflate,sdch接受语言:en-US,en;q=0.8接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3响应标题:缓存控制:无缓存连接:保持活动内容类型:文本/html日期:2012年4月15日星期日15:30:29 GMT过期时间:1985年1月20日星期日00:00:00 GMT保持活动时间:超时时间=5,max=100 Pragma:no cache Server:Apache/2.2.21 Win64 PHP/5.3.10传输编码:chunked X-Powered-By:PHP/5.3.10I更改了PHP代码,但问题仍然存在。您可以在QuestionGet中看到更改的代码警告:无法修改标题信息-标题已由从C:\wamp\www\Dashboard\test.php:14开始的输出发送
header("Expires: Sun, 20 Jan 1985 00:00:00 GMT"); // date in the past
header("Cache-Control: no-cache");
header("Pragma: no-cache"); 
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");