繁体   English   中英

如何使用缓存来提高性能?

[英]How can I use caching to improve performance?

我的情况是: WebApp -> WCF Service -> EDMX -> Oracle DB

当我想绑定网格时,我使用EDMX即LINQ Query从Oracle DB中获取记录。 但是,这会降低性能,因为WebApp和Oracle DB之间会发生多层。 我可以使用缓存机制来提高性能吗? 但是据我所知,缓存是在整个应用程序之间共享的。 因此,如果我更新缓存,其他用户可能会收到错误的信息。 我们可以为每个用户使用缓存吗? 还是有其他方法可以提高应用程序的性能?

是的,您绝对可以使用缓存技术来提高性能。 一般而言,缓存是“应用程序范围的”(或应该是应用程序的),并且所有用户都可以使用相同的数据。 但这实际上取决于您的方案和实现。 我看不到添加额外的缓存层将如何降低性能,这是一种可靠的体系结构,值得付出额外的复杂性。

ASP.NET缓存具有“缓存依赖项”的概念,这是一种通知缓存机制基础源已更改的方法,并且应刷新缓存的数据并在下一个请求时重新加载。 ASP.NET具有SQL Server的内置缓存依赖性,并且通过Google的快速搜索可以发现Oracle可能还可以使用某些东西。

如Jakob所述,应用程序范围的缓存是提高性能的好方法。 通常,可以在应用程序级别缓存用户上下文无关的数据(例如,参考数据)。

您还可以通过在用户登录时将数据存储在用户的会话中来缓存用户上下文数据。 然后,可以在该用户会话(HttpContext.Session)的持续时间内缓存数据。可以将会话数据配置为存储在Web应用程序进程内存,状态服务器(特殊的WCF服务)或SQL Server数据库中,取决于架构和基础架构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM