Performance 如何在登录/注销时处理浏览器缓存?
为了提高性能,我想为每个页面添加一个相当长的缓存控件(最多30分钟),因为它们不会经常更改。但是,每个页面还显示登录用户的名称(如本网站) 问题是当用户登录或注销时:用户名必须更改。如何在每次登录/注销操作后更改用户名,同时保持长缓存控制 以下是我能想到的解决方案:Performance 如何在登录/注销时处理浏览器缓存?,performance,caching,Performance,Caching,为了提高性能,我想为每个页面添加一个相当长的缓存控件(最多30分钟),因为它们不会经常更改。但是,每个页面还显示登录用户的名称(如本网站) 问题是当用户登录或注销时:用户名必须更改。如何在每次登录/注销操作后更改用户名,同时保持长缓存控制 以下是我能想到的解决方案: 检索和显示用户名的Ajax请求(未缓存)。如果我有两个请求(/user?registed和/user?new),它们也可以被缓存。但是我担心这个额外的请求会使我的缓存性能失效 添加唯一的URL变量(?time=)以使URL不同,并
- 检索和显示用户名的Ajax请求(未缓存)。如果我有两个请求(/user?registed和/user?new),它们也可以被缓存。但是我担心这个额外的请求会使我的缓存性能失效
- 添加唯一的URL变量(?time=)以使URL不同,并取消缓存。然而,我必须将这个变量添加到我网页上的所有链接中,这在代码方面不是很方便
Cache-Control: private
这在实践中通常已经足够了。这就是苏的用途
理论上,如果您需要考虑来自同一客户机的可变登录情况,您可能应该在Cookie
上设置Vary
(假设这是您用于登录的机制)。然而,的这个值Vary
(和大多数其他值一样)会完全弄乱IE的缓存,因此通常是避免的。此外,通常需要允许用户在无需重新获取的情况下逐步浏览包括登录/注销页面在内的后退/前进列表
对于每个页面都必须正确登录的情况(如银行业务),通常会使用完整的
缓存控制:无缓存。所以您的答案是在所有情况下都不要缓存,对吗?我对Cache Control:private的理解是,这告诉代理不要缓存页面,而浏览器会根据需要进行处理(显然也没有缓存)。