php生成的xml如何在不关闭浏览器(ie)的情况下,让ie读取每次生成xml

时间:2022-10-15 10:10:48
php生成的xml如何在不关闭浏览器(ie)的情况下,让ie读取每次生成xml

比如访问 a.php?id=1就生成id=1的xml文件;
a.php?id=2生成id=2的xml文件;但是目前的情况是访问了id=1的页面,在访问id=2的页面,此时虽然xml文件内容已经变更了,但是页面读取的xml还是id=1的内容,刷新也不行,必须关闭ie或者清空缓存,再就是火狐和谷歌就没有该问题。

9 个解决方案

#1


可以在url后面加上一个随机数

#2


既然你知道要 清空缓存
那么发送 xml 前,下发送不缓存的头就是了
function no_cache($type='') {
        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
        header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
//header('Cache-Control: post-check=0, pre-check=0',false);
        header ("Pragma: no-cache");                          // HTTP/1.0
//session_cache_limiter('public, no-store');

        if($type) {
                header("Content-type: text/$type");
        }
}

#3


引用 2 楼 xuzuning 的回复:
既然你知道要 清空缓存
那么发送 xml 前,下发送不缓存的头就是了PHP code?123456789101112function no_cache($type='') {        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past        header ("L……



还是不行。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta http-equiv="pragram" content="no-cache">

我的meta现在只有他们3个,还是有缓存,我写在了显示页面的前面。

#4


不知道楼主的具体什么需求?不关闭ie读取,那只有ajax或用js跳转了。楼主的问题是没有跳转吧。对于a.php?id=1和a.php?id=2浏览器会认为是不同请求,肯定不会读取缓存的

#5




引用 4 楼 luojxun 的回复:
不知道楼主的具体什么需求?不关闭ie读取,那只有ajax或用js跳转了。楼主的问题是没有跳转吧。对于a.php?id=1和a.php?id=2浏览器会认为是不同请求,肯定不会读取缓存的


其实缓存文件中的xml我看见了,其实文件已经根据id变化了,但是ie浏览器不读取,但是你把这个缓存中的xml删除了在刷新或者关闭ie在打开,页面又能读取正确的数据。

#6


ie只读取第一次生成的xml内容,即便打开id=2的时候,xml文件已经改变,但还是读取第一个。

#7


难道楼主是在一个网页里iframe一个xml?

#8


引用 7 楼 luojxun 的回复:
难道楼主是在一个网页里iframe一个xml?


网页引入了一个falsh翻书的相册,相册是读取xml的,我用php做成在浏览页面的时候生成对应id的xml,不同的id对应同一个xml但是内容不同,

可以在ie中 每次打开不同的页面flash不会读取新生成的xml内容,而是第一个打开的页面时候生成的xml内容,但是其实xml在每次打开不同页面的时候(a.php?id=1, id是不同的) 已经被改变。

谷歌 火狐无此问题。

#9


引用 3 楼 oRussell1 的回复:
引用 2 楼 xuzuning 的回复:既然你知道要 清空缓存
那么发送 xml 前,下发送不缓存的头就是了PHP code?123456789101112function no_cache($type='') {        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the pa……


版主说的是加http协议头,不是html头。还有加随即数应该可以的

#1


可以在url后面加上一个随机数

#2


既然你知道要 清空缓存
那么发送 xml 前,下发送不缓存的头就是了
function no_cache($type='') {
        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
        header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
//header('Cache-Control: post-check=0, pre-check=0',false);
        header ("Pragma: no-cache");                          // HTTP/1.0
//session_cache_limiter('public, no-store');

        if($type) {
                header("Content-type: text/$type");
        }
}

#3


引用 2 楼 xuzuning 的回复:
既然你知道要 清空缓存
那么发送 xml 前,下发送不缓存的头就是了PHP code?123456789101112function no_cache($type='') {        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past        header ("L……



还是不行。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta http-equiv="pragram" content="no-cache">

我的meta现在只有他们3个,还是有缓存,我写在了显示页面的前面。

#4


不知道楼主的具体什么需求?不关闭ie读取,那只有ajax或用js跳转了。楼主的问题是没有跳转吧。对于a.php?id=1和a.php?id=2浏览器会认为是不同请求,肯定不会读取缓存的

#5




引用 4 楼 luojxun 的回复:
不知道楼主的具体什么需求?不关闭ie读取,那只有ajax或用js跳转了。楼主的问题是没有跳转吧。对于a.php?id=1和a.php?id=2浏览器会认为是不同请求,肯定不会读取缓存的


其实缓存文件中的xml我看见了,其实文件已经根据id变化了,但是ie浏览器不读取,但是你把这个缓存中的xml删除了在刷新或者关闭ie在打开,页面又能读取正确的数据。

#6


ie只读取第一次生成的xml内容,即便打开id=2的时候,xml文件已经改变,但还是读取第一个。

#7


难道楼主是在一个网页里iframe一个xml?

#8


引用 7 楼 luojxun 的回复:
难道楼主是在一个网页里iframe一个xml?


网页引入了一个falsh翻书的相册,相册是读取xml的,我用php做成在浏览页面的时候生成对应id的xml,不同的id对应同一个xml但是内容不同,

可以在ie中 每次打开不同的页面flash不会读取新生成的xml内容,而是第一个打开的页面时候生成的xml内容,但是其实xml在每次打开不同页面的时候(a.php?id=1, id是不同的) 已经被改变。

谷歌 火狐无此问题。

#9


引用 3 楼 oRussell1 的回复:
引用 2 楼 xuzuning 的回复:既然你知道要 清空缓存
那么发送 xml 前,下发送不缓存的头就是了PHP code?123456789101112function no_cache($type='') {        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the pa……


版主说的是加http协议头,不是html头。还有加随即数应该可以的