2011-02-28 70 views
4

如何停止使用Servlets在瀏覽器中緩存頁面?如何防止Servlet被緩存的結果?

我想如果我按回到瀏覽器的按鈕,當我在我登錄該會議本應到期。

+0

的[限制從signout後的前一頁的用戶。]可能重複(http://stackoverflow.com/questions/4194207/restrict-user-from-the-previous-page-after-signout) – BalusC 2011-02-28 11:59:27

回答

2

如果你得到了你可以發送HTTP頭請求,這將鼓勵瀏覽器而不是一個HttpServletResponse(實施)對象緩存您發送給他們的內容。

HttpServletResponse response; // You'll need to initialize this properly 

response.setHeader("Cache-control", "no-cache, no-store"); 
response.setHeader("Pragma", "no-cache"); 
response.setHeader("Expires", "-1"); 

HttpServletResponseHttpServletResponseWrapper的文檔。如果您需要閱讀HTTP中的緩存控制標頭,請參閱check this out

+0

是否需要上述所有行或setHeader()中的任何一個是否足夠? – Alpine 2011-02-28 09:00:09

+0

@Alpine取決於瀏覽器。查看我剛添加的有關緩存控制標題的鏈接。這些只是例子。 – 2011-02-28 09:03:00

+0

R.Younce:謝謝..但我仍然遇到問題。登錄後如果我按回然後轉發會話仍然在 – Prashant 2011-02-28 09:19:40

10

永久禁用緩存。

// Set to expire far in the past. 
    response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT"); 

    // Set standard HTTP/1.1 no-cache headers. 
    response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 

    // Set IE extended HTTP/1.1 no-cache headers (use addHeader). 
    response.addHeader("Cache-Control", "post-check=0, pre-check=0"); 

    // Set standard HTTP/1.0 no-cache header. 
    response.setHeader("Pragma", "no-cache"); 

清除客戶端緩存不會立即過期會話,但會清除瀏覽器中的會話cookie。要使會話立即過期,您需要在服務器端jsp或servlet中明確指定。

// use session invalidate 
session.invalidate();