gpt4 book ai didi

c# - 用户输出缓存。我注销时的错误

转载 作者:行者123 更新时间:2023-11-30 18:00:49 25 4
gpt4 key购买 nike

我做了一个 GetVaryByCustomString 返回:

context.User.Identity.IsAuthenticated.ToString();

但我有一个大问题,想象一下这个流程:

  1. 用户(或任何人)访问主页。 GetVaryByCustomString 将返回“false”并将其缓存。每次有人问首页有没有变化,都会返回304。

  2. 我在站点登录并转到主页,GetVaryByCustomString 返回“true”,然后不使用缓存。每次我转到主页时,ASP.NET 都会返回 304。

  3. 我注销并转到主页,现在 GetVaryByCustomString 返回 304,因为第一步,但 OutputCache 不知道我拥有的缓存来自登录用户。

    <

如果我按 Ctrl+F5,它会起作用,因为问题出在浏览器/服务器中,服务器端缓存没问题。但它返回 304,并且我缓存了一个记录页面。

有什么解决办法吗?还是我需要停止缓存经过身份验证的用户?

更新:我认为可变值的缓存不起作用。它需要浏览器也按此值进行缓存....并且不存在随 Cookie 变化...

最佳答案

我们最终所做的是包括 SO 在内的大多数网站所做的:用关于当前用户的零信息缓存页面。

使用 AJAX,获取谁是当前用户并根据他们操作页面。

示例:成员(member)个人资料上的关注/取消关注按钮。呈现缓存页面时不执行当前用户是谁的逻辑。页面加载后,使用 AJAX 访问服务器,检查当前用户是否关注并相应地更改按钮状态。

关于c# - 用户输出缓存。我注销时的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9694324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com