作者ogson (小猪仔)
看板Programming
标题Re: [请益] PHP图形显示问题
时间Mon Jun 18 20:37:12 2007
※ 引述《MrMarcus (请勿忘记密码)》之铭言:
: ※ 引述《ogson (小猪仔)》之铭言:
: : 再请教一下各位
: : 目前我先写好四个档案如下(依执行顺序排序)
: : h1.html:产生表格让使用者输入资料
: : p1.php:藉由输入的资料用Gnuplot画图并储存,header到h2.html
: : h2.html:再由src=p2.php 读取图档并显示
: : p2.php:读取储存的图形
: : 以这样的流程,我是以输入资料,然後得到图,再回上一页,再输入资料
: : 得到图,如此反覆做简单测试,在firefox上执行没什麽问题,但是到了IE
: : 却出现了问题,在第一次启动IE并执行时,图形有出来没问题,但当我回
: : 到上一页,再输入资料执行得到的图形却是最一开始(第一次启动IE产生
: : 的图)的图形,如果按REFRESH才会将最新产生的图读进来,想请问一下,会
: : 有这样的问题,是因为IE本身有各buffer储存你第一次执行的网页(h2.html)
: : 当你要再一次读取,IE并不会再发出request,而会直接去buffer找(但是并没
: : 有更新的动作),所以每次都得到一样的网页内容,反之,firefox则会做更新的
: : 动作,所以我得到的结果都是最新的,这部分还请高手帮忙解答一下。
: : 如果是这样的话,那我是在程式内写入refresh的动作吗?或是各位有更好的解决
: : 办法?
: 另一个方式是像其他网友提的,送防止快取的header给浏览器。
: 但是这个header要注意,不是放在你的h2.html里面,而是要在
: 你送出图片的p2.php里面。换句话说,在你的p2.php里面,要
: 送出图片资料之前,加上这两行:
: header("Cache-Control: no-cache, must-revalidate");
: header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 随便给个过去的时间
这各方法也是行不通...囧rz,我还有去网路上找一些header的用法,也依照
指示在没有任何输出前就加上(header no-cache...等),出来的结果还是一样,我
在想会不会是因为我用gnuplot(我用C写一个外部程式去CALL的)产出的图并没有到
cache,所以IE读档的时候就直接去Temporary Internet Files资料夹抓,结果因为
我每次产生的图档档名都相同,所以都没有更新。
我目前想到的方法是,让每次的档名都不一样,这样应该就能确保每次的图档都是
最新的,但是这样的缺点是Temporary Internet Files资料夹的大小可能会随使用
者的使用次数而不断增加。
不晓得大家有没有更好的解决办法?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.225.22.196
1F:推 ephesians:有没有试过调整p2.html为非快取? 61.231.68.34 06/18 21:28
2F:→ ephesians:说错了,是h2.html设非快取218.160.109.149 06/19 05:09