2009-03-03 69 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