【问题标题】:Caching for both Angular and ASP .NET MVCAngular 和 ASP .NET MVC 的缓存
【发布时间】:2018-11-09 09:53:26
【问题描述】:

背景

在我的项目应用程序中,集成了许多小应用程序,并且它们内置了不同的技术,例如

  • Angular JS 1.5
  • ASP.Net MVC
  • 角 5

我的应用还使用 AWS 作为云合作伙伴。

问题

我需要在我的应用中实现缓存机制。我在 S3 存储桶中存储了一些值,并且正在使用 API 调用来提取这些值。我想将这些值保留在缓存中。由于它是在多种技术中实现的(尤其是 Angular 和 ASP.Net MVC),是否可以共同使用任何缓存机制?

观察

我对此做了一些工作,并观察到以下缓存可用

  1. .NET MVC - 内存缓存
  2. Angular - 使用 ReactJS 在内存缓存中

由于 AWS 是我的云合作伙伴,它提供 ElastiCache 作为 Web 服务,支持 MemCached 和 Redis。我不清楚这是否会表现得像普通的内存缓存(在 ASP .NET Core 中),还是会引用数据库进行缓存并从那里检索详细信息(导致往返!)?

问题

谁能告诉我,我的应用可以为 .net mvc 和 angular 处理最好的缓存技术吗?

【问题讨论】:

    标签: caching memcached amazon-elasticache


    【解决方案1】:

    这有点棘手(我假设您正在使用多个内存缓存服务器)。当您使用 memcache 时,很大程度上取决于客户端的实现。您的客户决定将特定密钥存储在哪台服务器上。并且服务器不知道其他服务器的存在。

    由于您使用不同的语言,您将使用不同的客户端,因此每个客户端将实施自己的算法来决定将放置密钥的服务器。因此,在某些情况下,您在 Angular 上的客户端将在服务器“S1”上存储密钥“K1”,而 .Net 客户端将在服务器“S2”上存储相同的密钥

    这将增加使这些密钥失效的另一个问题,因为需要使两台服务器上的密钥失效。

    还有一个问题。如果键是通用的,则必须以 json 格式存储所有对象。这样密钥就存储在同一个内存缓存服务器上,所有编程语言都可以读取。

    我认为最好的办法是设置足够短的时间来使 memcache 上的键无效(如果可行的话)并为每种客户端类型存储具有不同前缀或后缀的键。因此.net 客户端会将密钥 K1 存储为“K1-net”,而使用 Angular 的客户端会将其存储为“k1-ang”。

    我还会探索可能有帮助的 redis(不确定)

    【讨论】:

    • 感谢 Pratik 的更新。在我的应用程序中,我们将唯一地存储密钥。因此,.net 和 angular 不会有相同的键。我也在考虑去集中式或分布式缓存。此外,我的数据存储响应采用 JSON 格式,因此缓存将仅以 JSON 格式存储对象。现在,该选哪一个? MemCached 或 Redis。对于 MemCached 或 Redis,你知道如何连接 .net 和 Angular 应用吗?
    • 对于.Net,您可以使用enyim cache,对于角度不确定,但这应该有助于npmjs.com/package/memcached
    • 我分析的正是你更新的内容!到目前为止,我没有其他选择去 Redis,因为没有 Angular 插件。但另一方面,MemCached 与此有关。会试试的。
    猜你喜欢
    • 2016-01-28
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多