0

我目前有一个网站,其中大约有 20 个单独的页面。所有页面都有两个版本...查看者尚未登录的版本以及已登录的版本。登录版本可能与未登录版本完全不同......我想知道是否有一种简单的方法可以告诉浏览器在用户登录或注销时让我的域的所有缓存页面“无效”。

示例:未登录的查看者访问了我网站上的许多页面,这导致他们的浏览器缓存所有这些页面。登录时,我可以为用户提供一个特定的标头,这将使他们的浏览器在下次加载页面时不使用缓存版本?这需要在登录和注销时发生。

任何提示或技巧都会非常有帮助,我在缓存方面相当新......谢谢:)

4

3 回答 3

1

不,您不能告诉用户的浏览器取消缓存页面。您可以为已登录用户使用与已注销用户不同的 URL(添加查询字符串就足够了),或者,首先不允许缓存其中任何一个。

于 2012-06-14T08:44:01.590 回答
1

理想情况下,您不会有单独的页面来表示用户的登录状态。您的应用程序的该属性确实属于模型而不是视图。我想一个登录的用户永远不会通过控制器看到未登录的页面,对吧?在这种情况下,我会提出,哪个页面被缓存,哪个页面没有被缓存并不重要。

以下是我做你想做的事情的唯一方法,但它并不漂亮......如果用户已登录,但请求未登录页面,则使页面过期(例如 $q- >header( -expires => 'now' )) 并将登录的用户发送到未登录的页面。但是,如上所述,我怀疑你想这样做。您可以引用具有 js/ajax 的 .js 文件来检测这种情况,然后将用户重定向回登录页面。

你可以看到这可能是一场多么严峻的考验。我建议收紧你的应用程序设计,这样这个问题就会消失。希望这会有所帮助。祝你好运!

于 2012-06-14T16:29:55.907 回答
0

看看强制浏览器清除缓存。那里有一些有希望的线索。

否则,告诉您的用户按住 Shift 键并单击重新加载按钮。;-)

于 2012-06-14T08:56:12.097 回答