2012-02-15 30 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