2012-02-15 59 views
0

當我的GAE應用程序的用戶單擊後退按鈕時,我需要阻止他們看到頁面的緩存版本 - 也就是說,我需要該網址的python getpost代碼要運行。防止Google App Engine中的頁面緩存

+0

感謝您的所有答案!我問這個問題主要是因爲互聯網文檔建議設置Pragma等是無效的,並且需要更強大的(未指定的)服務器端解決方案。這些解決方案非常可靠嗎? – Tr3y 2012-02-16 01:01:23

+0

好吧,我連接的答案中的upvotes數量似乎表明它是可靠的。 ;)在我的應用程序中也有類似的需求(我有一個REST API,不能被客戶端瀏覽器緩存),所以我遵循了答案中的建議,到目前爲止它對我很有用。我建議你自己嘗試一下,並通過監視應用程序引擎儀表板中的日誌來驗證它的工作原理。緩存頁面根本不會顯示爲請求,或者會顯示,但HTTP狀態304(未修改)作爲其響應。 – 2012-02-16 07:01:11

回答

6

chachan提供的答案不適用於所有瀏覽器。更完整的答案可以在this answer中找到。基本上,您需要設置所有這些標頭:

<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="0"> 

告訴瀏覽器總是從服務器獲取頁面。

+0

謝謝。這似乎適用於所有我能夠測試的情況。 – Tr3y 2012-03-02 05:51:13

2

似乎這個問題與Google App Engine完全沒有關係。雖然,我發現這一點:

<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> 

希望能夠幫助您。

3

有時在meta標記中設置緩存並不是您要查找的內容,並且設置http標頭更方便。這個你可以在Python做很容易:

self.response.headers [ 「附註」] = 「無緩存」

self.response.headers [ 「緩存控制」] =「無-cache,no-store,must-revalidate,pre-check = 0,post-check = 0「

self.response.headers [」Expires「] =」Thu,01 Dec 1994 16:00:00「

古爾對如何在這裏使用的響應類大文件:http://code.google.com/appengine/docs/python/tools/webapp/responseclass.html