Asp classic IE7经典ASP缓存

Asp classic IE7经典ASP缓存,asp-classic,session-variables,Asp Classic,Session Variables,我有一个经典的asp网站,它使用会话变量来存储登录状态,如userid、isloggedin等。在注销时,会重置会话变量,并调用Session.adward(),然后重定向到登录页面。在IE7中,我注意到在注销后,我可以输入一个以前访问过的url,并查看注销前它的状态的缓存版本。点击ctl-f5将再次从服务器重新加载并重定向到登录页面。这是我希望发生的行为,即使在没有ctl-f5的情况下键入url也是如此。有人知道如何获取此行为吗?设置“无缓存”标题,以便页面不会首先被缓存。见: 我以前也遇到过

我有一个经典的asp网站,它使用会话变量来存储登录状态,如userid、isloggedin等。在注销时,会重置会话变量,并调用Session.adward(),然后重定向到登录页面。在IE7中,我注意到在注销后,我可以输入一个以前访问过的url,并查看注销前它的状态的缓存版本。点击ctl-f5将再次从服务器重新加载并重定向到登录页面。这是我希望发生的行为,即使在没有ctl-f5的情况下键入url也是如此。有人知道如何获取此行为吗?

设置“无缓存”标题,以便页面不会首先被缓存。见:


我以前也遇到过类似的问题,但每当我单击该页面上的链接时,就会要求我重新登录

您可以尝试重置sessionID=“”或sessionID=“XYZ”,并使XYZ成为您的代码在注销时忽略的内容


您也可以尝试设置无缓存头。

您可以不发送缓存,但这会降低性能,只是为了得到您想要的。我更喜欢Liams的建议,并确保您在该页面上所做的一切都需要您登录,这样就没有人可以做任何他们不应该做的事情。如果它是一个电子邮件系统或类似的系统,人们“可以”查看其他人缓存的电子邮件,那么在这些情况下,是的,不缓存敏感信息是一种方法(例如,默认情况下,您不能缓存HTTPS页面)

您还可以在头部包含一些javascript,用于检查是否存在“登录”cookie。这将在每次加载页面时运行,如果不存在cookie,那么JS可以将您重定向到登录页面。不是100%的傻瓜,但足够好。您注销页面需要清除此cookie,然后登录页面设置它。

我认为mkoryak的答案(使用无缓存头)似乎是最好的。如果希望某些页面仅在用户登录时显示,最好的方法是指示浏览器不要缓存该页面。此外,调整Cookie和使用javascript等方案确实决定了客户端的登录状态,这只是重新发明轮子

如果你想利用一些缓存,而你的页面不是经常更新的,一个好的折衷办法是将
Response.Expires
标题设置为你认为合适的值(我认为是以分钟为单位)