有哪些方法可以用来避免浏览器缓存页面?

时间:2009-03-03 06:04:51

标签: browser caching

我的用户正在尝试查看在线考试的问题。在考试期间,他们选择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。

3 个答案:

答案 0 :(得分:2)

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

编辑:这是一个旧的规范,或者这在事实上是不同的。尝试

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

(来自here

答案 1 :(得分:1)

Set-Cookie:PHPSESSID = [...]; path = /

他们是否有可能运行某种cookie控件?

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

答案 2 :(得分:0)

我用:

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

编辑: ......从来没有遇到过问题。似乎一些非常强大的缓存层位于用户和您的应用程序之间。