【问题标题】:Razor Pages ASP.NET Core cache onGet propertiesRazor Pages ASP.NET Core 缓存 onGet 属性
【发布时间】:2019-05-10 08:23:35
【问题描述】:

有没有办法缓存onGetAsync方法中加载的数据?例如,我们从onGetAsync 中的数据库加载数据并将它们绑定到我们的属性。

我想知道是否有办法让这些数据保持缓存/持久化,这样onPostAsync 方法就不需要重新加载所有这些并再次访问数据库。目前我们在 PageModel 的构造函数中加载数据,所以它被加载了两次。

例如,我们有一个remove from cart,它从购物车中删除了一个商品,所以我们想继续显示购物车页面,所以会出现return Page();,但我们显然需要重新加载所有数据,这非常低效.

我认为这可能必须发生,因为无论如何我们都必须使用 WriteModel 更新数据库。

【问题讨论】:

  • 如果您要缓存的数据适用于所有请求,那么缓存是最好的选择。如果它适用于单个用户,您应该考虑使用 Session 来代替。在此处查看有关 Razor 页面中状态管理选项的更多信息:learnrazorpages.com/razor-pages/state-management

标签: c# razor-pages asp.net-core-2.2


【解决方案1】:

在 ASP.NET Core 中有多种缓存选项。最简单的是内存缓存,然后使用 SQL Server 或 Redis 扩展到分布式缓存。有关详细信息,请参阅这些文章:

您是正确的,OnPost 需要重新加载要显示的数据。 Web 请求是无状态的,因此无需缓存数据就需要重新查询。您可能会更改代码以使用 JavaScript,以便从购物车中删除选项对服务器进行 AJAX 调用,如果项目成功删除,则更新 UI。这避免了重新加载数据的往返。

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 2019-03-25
    • 2020-11-21
    • 2018-03-30
    • 1970-01-01
    • 2018-10-16
    • 2019-07-25
    • 2018-06-07
    • 2023-02-04
    相关资源
    最近更新 更多