仅为匿名用户缓存 ASP.NET 页面

2024-04-02

有没有一种简单的方法来仅为匿名用户缓存 ASP.NET 整个页面(使用表单身份验证)?

上下文:我正在制作一个网站,其中向匿名用户显示的页面大多是完全静态的,但向登录用户显示的相同页面则不是。

当然,我可以通过后面的代码手动完成此操作,但我认为可能有更好/更简单/更快的方法。


我正在使用 asp.net MVC,所以我在控制器中执行了此操作

if (User.Identity.IsAuthenticated) {
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetExpires(DateTime.Now.AddMinutes(-1));
    Response.Cache.SetNoStore();
    Response.Cache.SetNoServerCaching();
}
else {
    Response.Cache.VaryByParams["id"] = true; // this is a details page
    Response.Cache.SetVaryByCustom("username"); // see global.asax.cs GetVaryByCustomString()
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
    Response.Cache.SetCacheability(HttpCacheability.Server);
    Response.Cache.SetValidUntilExpires(true);
}

我这样做的原因(而不是声明式)是我还需要能够通过配置打开和关闭它(此处未显示,但在我的配置变量的 if 中有一个额外的检查)。

您仍然需要根据用户名进行更改,否则当出现登录用户时您将不会执行此代码。我的 GetVaryByCustomString 函数在未经身份验证时返回“匿名”,或者在可用时返回用户名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅为匿名用户缓存 ASP.NET 页面 的相关文章

随机推荐

  • 如何编写 T4 模板以从 Entity Framework 6 创建 DTO?

    我有一个大型数据库 我在 Entityframework 中使用数据库优先模型 它位于互联网服务器上并通过 WCF 进行通信 域模型使用所有小写字母来表示实体 存储过程和列 属性的名称 在我的客户端应用程序中 我希望使用标准 PascalC
  • JS 可变变量可以从闭包访问[重复]

    这个问题在这里已经有答案了 所以我的 JS 编译器中有一个警告 但是你能向我解释一下这是否真的会影响我的代码的执行方式吗 for x 0 x lt levels length x var level levels x var candles
  • 通过php代码在xls表中插入图片

    问候 我必须在行 0 列 0 上插入徽标 图像 我为此使用 Spreadsheet Excel Writer 我尝试了它的 insertBitmap 方法 程序工作正常 但不显示位图图像在 xls 工作表上 而不是空白行 可能是什么原因 您
  • 分发预先经过 NGEN 处理的程序集是否有意义?

    我发现了一些关于使用 NGEN 作为安装程序的最后一步的有趣链接这个帖子 https stackoverflow com questions 522323 how do i run ngen at the end of the instal
  • 使用一个套接字创建 2 个流

    我正在尝试创建一个在互联网上运行的多人游戏 问题是我正在尝试获取流上的输入 但由于某种原因我无法使用一个套接字创建 2 个流 我将解释一下 Socket s new Socket 127 0 0 1 5001 ObjectInputStre
  • 如何将 csv 文件导入 MySQL Workbench?

    我有一个 CSV 文件 它包含 140 万行数据 因此我无法在 Excel 中打开该 csv 文件 因为它的限制约为 100 万行 因此 我想在MySQL Workbench中导入这个文件 此 csv 文件包含类似以下的列 Service
  • 如何找到图像中最密集的区域?

    考虑一个黑白图像 例如this http img13 imageshack us img13 7401 10416827 jpg 我想做的是找到白点最密集的区域 在这种情况下 有 20 21 个这样的密集区域 即 点簇构成一个密集区域 谁能
  • 以编程方式确定身份验证模式

    有没有办法以编程方式确定 SharePoint 2007 Web 应用程序是否正在使用表单身份验证 我想一种方法可能是从 web config 中读取它 但我想知道 API 中是否公开了一些属性 看看 admin Authenticatio
  • 尽早停止詹金斯管道作业

    在我们的 Jenkins Pipeline 工作中 我们有几个阶段 我想要的是 如果任何一个阶段失败 那么构建就会停止 而不是继续到进一步的阶段 以下是其中一个阶段的示例 stage Building def result sh retur
  • 核心数据单例管理器?

    有哪些技术原因不创建单例类来管理我的核心数据 我现在正在尝试做出决定 是否应该删除所有样板核心数据代码并在单例中重新实现它 Xcode 模板中的应用程序委托中的样板代码在功能上是作为单例实现的 应用程序对象是一个单例 它只维护一个委托对象
  • Office 2010 AddIn 开发 - 我可以从代码隐藏中读取用户正在使用的主题吗?

    PowerPoint 2010 提供三种默认主题 银色 黑色和蓝色 是否可以从代码隐藏中检查用户当前正在使用哪个主题 我使用此代码根据设置的主题设置界面的颜色 public static class LFTheme const int Th
  • .NET 任务实例在运行期间是否会超出范围?

    如果我在方法中有以下代码块 使用 NET 4 和任务并行库 var task new Task gt DoSomethingLongRunning task Start 并且该方法返回 该任务是否会超出范围并被垃圾收集 或者是否会运行完成
  • 具有私有基数的函数成员指针

    以下代码会产生编译时错误 base print 无法访问类中声明的私有成员 base der 不过我已经做了会员了public在派生类中 为什么这不起作用 include
  • MVC 4 - 编辑可变长度项目列表的更优雅方法?

    我发现的编辑可变长度项目列表的最佳建议是 2008 年为 ASP Net MVC 2 编写的 http blog stevensanderson com 2008 12 22 editing a variable length list o
  • 如何从html标签中只获取文本

    我查询了一些数据 结果是这样的 p img src xxx png alt br p p Lorem Ipsum is simply dummy text of the printing and typesetting industry L
  • 如何在 WooCommerce 中获取订单税务详细信息和税率?

    我正在尝试获取税率用于订单插件中的自定义变量 当然 我可以通过以下方式请求大量数据 order gt get 但我找不到获取税率的方法 例如 21 gt 21 有人有想法让这变得简单吗 你将会拥有获取订单税项这会给你一个数组WC Order
  • 循环遍历 XML 文档

    我的方法 if File Exists C config xml System Xml XmlDocument xd new System Xml XmlDocument xd Load C config xml System Xml Xm
  • 在 C# 中使用 PrintSpoolerAPI 函数 SetForm()

    我正在开发一个 Windows 窗体应用程序 我想在其中打印自定义文档 该自定义文档具有自定义尺寸 我必须使用 C 代码设置默认打印页面尺寸 我做了一些谷歌搜索并发现了PrintSpoolerAPI 我找到的代码将使用添加自定义表单 页面A
  • 使用空值上的连接级别使用 pl/sql 分割字符串

    我在 Oracle pl sql 中使用以下代码 版本 Oracle 数据库 11g 版本 11 2 0 1 0 select regexp substr A B C 1 level output from dual connect by
  • 仅为匿名用户缓存 ASP.NET 页面

    有没有一种简单的方法来仅为匿名用户缓存 ASP NET 整个页面 使用表单身份验证 上下文 我正在制作一个网站 其中向匿名用户显示的页面大多是完全静态的 但向登录用户显示的相同页面则不是 当然 我可以通过后面的代码手动完成此操作 但我认为可