Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 如何在登录/注销时处理浏览器缓存?_Performance_Caching - Fatal编程技术网

Performance 如何在登录/注销时处理浏览器缓存?

Performance 如何在登录/注销时处理浏览器缓存?,performance,caching,Performance,Caching,为了提高性能,我想为每个页面添加一个相当长的缓存控件(最多30分钟),因为它们不会经常更改。但是,每个页面还显示登录用户的名称(如本网站) 问题是当用户登录或注销时:用户名必须更改。如何在每次登录/注销操作后更改用户名,同时保持长缓存控制 以下是我能想到的解决方案: 检索和显示用户名的Ajax请求(未缓存)。如果我有两个请求(/user?registed和/user?new),它们也可以被缓存。但是我担心这个额外的请求会使我的缓存性能失效 添加唯一的URL变量(?time=)以使URL不同,并

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

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

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

  • 检索和显示用户名的Ajax请求(未缓存)。如果我有两个请求(/user?registed和/user?new),它们也可以被缓存。但是我担心这个额外的请求会使我的缓存性能失效
  • 添加唯一的URL变量(?time=)以使URL不同,并取消缓存。然而,我必须将这个变量添加到我网页上的所有链接中,这在代码方面不是很方便
如果我有更多注册用户和新用户不一样的内容,这个问题就会变得更严重

Cache-Control: private
这在实践中通常已经足够了。这就是苏的用途

理论上,如果您需要考虑来自同一客户机的可变登录情况,您可能应该在
Cookie
上设置
Vary
(假设这是您用于登录的机制)。然而,
的这个值Vary
(和大多数其他值一样)会完全弄乱IE的缓存,因此通常是避免的。此外,通常需要允许用户在无需重新获取的情况下逐步浏览包括登录/注销页面在内的后退/前进列表


对于每个页面都必须正确登录的情况(如银行业务),通常会使用完整的
缓存控制:无缓存

所以您的答案是在所有情况下都不要缓存,对吗?我对Cache Control:private的理解是,这告诉代理不要缓存页面,而浏览器会根据需要进行处理(显然也没有缓存)。