缓存Angular和ASP .NET MVC

时间:2018-05-30 13:49:59

标签: caching memcached amazon-elasticache

背景

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

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

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

问题

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

观察

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

  1. .NET MVC - 内存缓存
  2. Angular - 使用ReactJS的内存缓存
  3. 由于AWS是我的云合作伙伴,因此它提供 ElastiCache 作为支持MemCached和Redis的Web服务。我不清楚这是否会像普通的内存缓存(在ASP .NET Core中)一样,或者这将引用数据库进行缓存并从那里检索详细信息(导致往返!)?

    问题

    任何人都可以让我知道最好的缓存技术可以处理我的应用程序的.net mvc和angular吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

还有一个问题。如果密钥很常见,则必须以json格式存储所有对象。因此,所有编程语言都将读取密钥存储在同一个memcache服务器上。

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

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