2009-03-03 93 views
0

我有一个用户试图查看在线考试的问题。在考试期间,他们选择4个答案中的1个,然后单击“答案”。对于这个用户来说,它似乎一遍又一遍地加载相同的页面/问题,因为它应该在每个问题得到解答后进入一个新问题。我的猜测是它是缓存,但它似乎不是浏览器缓存,因为它们已经尝试了Internet Explorer和Firefox。他们正在使用卫星互联网,所以我的猜测是他们的网络/路由器上还有其他缓存。什么是可以用来避免页面被浏览器缓存的方法?

以下是从服务器发送的标头。

HTTP/1.1 200 OK 
Date: Tue, 03 Mar 2009 05:52:38 GMT 
Server: Apache/2.2.8 (Unix) 
X-Powered-By: PHP/5.2.6 
Set-Cookie: PHPSESSID=[...]; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Connection: close 
Content-Type: text/html; charset=UTF-8 

我已经让用户完全重置了他们的浏览器设置,但它没有什么区别。我添加了一个时间戳到页面的GET查询/串,如:

/path/question.php?exam_id=2323&user_exam_id=2334&timestamp=1236063834 

我能用什么其他方法,强制用户的计算机刷新每个页面加载的页面?

服务器正在运行Apache,PHP,MySQL。

回答

0

我用:

Cache-Control: no-cache 
Pragma: no-cache 
Expires: Thu, 01 Jan 1970 00:00:00 GMT

编辑: ......从未有过的一个问题。看起来用户和应用程序之间有一些非常强大的缓存层。

2

请参阅w3.org's spec on Cache-Control,缓存控制只能有一个值。我想,你需要no-cache。

编辑:要么是旧规格,要么这是事实上的不同。尝试

Cache-Control: no-cache, no-store 
Pragma: no-cache 
Expires: -1 

(从here

1

的Set-Cookie:PHPSESSID = [...];路径=/

他们有可能有某种cookie控制运行?

如果是这样,PHP可以设置为通过URL传播会话ID。

+0

这会如何影响缓存?会话ID对于当前会话中的每个页面都是相同的。 – 2009-03-03 06:34:45

相关问题