如何通过登录/注销处理浏览器缓存?

时间:2010-03-08 06:29:18

标签: performance caching

为了提高性能,我想为每个页面添加一个相当长的Cache-Control(最多30分钟),因为它们不会经常更改。但是,每个页面还会显示登录用户的名称(如本网站)。

问题是当用户登录或注销时:用户名必须更改。如何在保持长缓存控制的同时在每次登录/注销操作后更改用户名?

以下是我能想到的解决方案:

  • Ajax请求(未缓存)以检索和显示用户名。如果我有2个请求(/ user?registered和/ user?new),它们也可以被缓存。但是我担心这个额外的请求会使我的缓存性能无效
  • 添加唯一的URL变量(?time =)以使URL不同,并取消缓存。但是,我必须将此变量添加到我的网页上的所有链接,而不是非常方便的代码

如果我实际拥有的注册用户和新用户的内容不同,则问题会更严重。

1 个答案:

答案 0 :(得分:5)

Cache-Control: private

通常在实践中足够了。这就是SO的用途。

理论上,如果您需要允许来自同一客户端的变量登录的情况,您应该在Vary上设置Cookie(假设您正在使用登录的机制)。但是,Vary的这个值(以及大多数其他值)完全搞乱了IE的缓存,因此通常会避免这种情况。此外,通常理想允许用户单步执行后退/前进列表,包括登录/退出页面,而无需重新获取。

对于每个页面强制执行适当登录的情况至关重要(例如银行业务),通常会使用完整的Cache-Control: no-cache