Django cache_control在IE8中不起作用

时间:2015-01-28 15:39:06

标签: django internet-explorer browser-cache cache-control

Django 1.7,python 3.4,IE8

我正在开发一个Django项目,其中用户通过窗口活动目录而不是Django db进行身份验证。

必须对用户进行身份验证才能查看其他页面。我在所有页面上使用@cache_control(no_cache = True,must_revalidate = True,no_store = True)来防止缓存。当用户点击" logout"时,后退按钮将在Firefox和Chrome上过期,但可以在IE8上运行。

客户只能从IE8访问此应用。在用户退出并按下后退按钮后,是否有任何方法可以阻止显示上一页?

请注意,我已将注销页面重定向回登录,但当用户点击后退按钮时,所有这些缓存页面仍将显示在IE8中。

欢迎并赞赏任何评论!

2 个答案:

答案 0 :(得分:0)

看起来没有缓存可能是问题所在:

Make IE to cache resources but always revalidate

尝试删除no-cache并将Expires标头设置为-1

这是上面链接的摘录:

"这些是关键的标题字段:

Last-Modified: Wed, 16 Feb 2011 13:52:26 GMT
Expires: -1
Cache-Control: must-revalidate, private
Last-Modified (or ETag) is needed as a validator

Expires -1表示资源已过时,必须重新验证 Cache-Control不得包含no-cache或no-store"

其他一些有用的链接:

http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/

http://support2.microsoft.com/default.aspx?scid=KB;EN-US;Q234067

答案 1 :(得分:0)

当用户点击退出按钮时,我最终检查了IE版本。如果它是IE8,那么我将关闭当前窗口并打开一个新的主页窗口。否则,什么都不做。

我还加回了@never_cache
@cache_control(no_cache = True,must_revalidate = True,no_store = True,max_age = 0)
使Chrome和Firefox中的页面失效,以防某些用户有权在这些浏览器中运行该应用程序。

不完全符合我的要求,但现在可以使用。仍在寻找更好的方法。