Кэширование для Angular и ASP .NET MVC - PullRequest
0 голосов
/ 30 мая 2018

Фон

В моем приложении для проекта было интегрировано много небольших приложений, и они имеют встроенные различные технологии, такие как

  • Angular JS 1.5
  • ASP.Net MVC
  • Угловой 5

Мое приложение также использует AWS в качестве партнера по облаку.

Проблема

Мне нужно реализовать механизм Caching в моем приложении.Я храню некоторые значения в корзине S3 и использую вызовы API для получения значений.Я хочу сохранить эти значения в кэше.Поскольку он реализован в нескольких технологиях (особенно в Angular и ASP.Net MVC), можно ли использовать какой-либо общий механизм кэширования?

Наблюдения

Я проделал некоторую работу над этим и заметил, что доступно следующее кэширование

  1. .NET MVC - В кэшировании памяти
  2. Angular- В кеше памяти с ReactJS

Поскольку AWS является моим облачным партнером, он предлагает ElastiCache в качестве веб-службы, которая поддерживает MemCached и Redis.Я не уверен, будет ли это вести себя как обычный In-Memory Cache (в ASP .NET Core), или это будет ссылаться на базу данных для кэширования и извлекать подробности (вызывать циклические изменения!) Оттуда?

Вопрос

Может кто-нибудь дать мне знать, какая наилучшая техника кэширования может быть использована в моем приложении как для .net mvc, так и для angular?

1 Ответ

0 голосов
/ 31 мая 2018

Это немного сложно (я предполагаю, что вы используете несколько серверов memcache).Когда вы используете memcache, многое зависит от реализации клиента.Ваш клиент решает, на каком сервере будет храниться тот или иной ключ.И серверы не знают о существовании других серверов.

Поскольку вы используете разные языки, вы будете использовать разные клиенты, поэтому каждый клиент будет реализовывать свой собственный алгоритм для определения сервера, на котором будет находиться ключ.размещены.Таким образом, будут случаи, когда ваш клиент на Angular будет хранить ключ «K1» на сервере «S1», а клиент .Net будет хранить этот же ключ на сервере «S2»

.ключей, так как это потребуется для аннулирования ключа на обоих серверах.

Существует еще одна проблема.Вам придется хранить все объекты в формате json, если ключи общие.Так что ключи, хранящиеся на одном и том же сервере memcache, будут прочитаны всеми языками программирования.

Я думаю, что лучше всего установить достаточно малое время для аннулирования ключей в memcache (если это возможно) и сохраненияключи с разными префиксами или суффиксами для каждого типа клиента.Таким образом, клиент .net будет хранить ключ K1 как «K1-net», а ключ с Angular будет хранить его как «k1-ang».

Я также хотел бы изучить Redis, который может помочь (не уверен)

...