データをキャッシュに保存する方法は?

チャラノグル

ViewComponent表示するためにを作成しました。List<Product>リストはREST APIサービスから取得したデータを評価したものです。これは私のクラスの実装です。

public class ProductsViewComponent : ViewComponent
{
    private readonly HttpClient _client;

    public ProductsViewComponent(HttpClient client)
    {
        _client = client ?? throw new ArgumentNullException(nameof(client));
    }

    public async Task<IViewComponentResult> InvokeAsync(string date)
    {
       using (var response = await _client.GetAsync($"/"product/get_products/{date}"))
       {
           response.EnsureSuccessStatusCode();
           var products = await response.Content.ReadAsAsync<List<Product>>();
           return View(products);
       }
    }
}

次のComponentsフォルダ内にあるhtmlテーブル内にリストをロードしますViews\Shared\Components\Products\Default.cshtml

私がしViewProductsことを表示する必要があるそれぞれ

@await Component.InvokeAsync("Products", new { date = myDate })

REST API使用して呼び出されるHttpClientように構成にしStartup.cs、次のとおりです。

services.AddHttpClient<ProductsViewComponent>(c =>
{
    c.BaseAddress = new Uri('https://api.myservice.com');
});

これはうまく機能しますが、主な問題は、ユーザーがページをリロードするか、製品のリストを表示する必要がある別のビューに入るたびに、アプリが別のAPI呼び出しを行うことです。

リストをキャッシュのようなものに保存しAPI、日付が選択した前の日付と等しい場合に再度呼び出すのを防ぐことは可能ですか?

私は学んでいるASP.NET Coreので、この議論についてはあまり専門家ではありません。

助けてくれてありがとう。

Jawand Singh |

マイクロソフトのドキュメントによるとhttps://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-2.1

IMemoryCacheデータのキャッシュに使用できます

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMemoryCache();

         services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseMvcWithDefaultRoute();
    }
}

のインスタンスを作成しますIMemoryCacheこれは、Microsoftのドキュメントの例です。これをすべて一緒に処理する別のクラスを作成できます。以下の例では、これはDateTimeを保存しているだけです。ただし、任意のオブジェクトをキャッシュに保存でき、キャッシュからその値を読み取ろうとすると、そのオブジェクトをTypeにキャストする必要があります。

上記のドキュメントを確認することを強くお勧めします。

public class HomeController : Controller
{
    private IMemoryCache _cache;

    public HomeController(IMemoryCache memoryCache)
    {
        _cache = memoryCache;
    }

    public IActionResult CacheTryGetValueSet()
    {
       DateTime cacheEntry;

       // Look for cache key.
       if (!_cache.TryGetValue(CacheKeys.Entry, out cacheEntry))
       {
           // Key not in cache, so get data.
           cacheEntry = DateTime.Now;

           // Set cache options.
           var cacheEntryOptions = new MemoryCacheEntryOptions()
           // Keep in cache for this time, reset time if accessed.
                .SetSlidingExpiration(TimeSpan.FromSeconds(3));

           // Save data in cache.
        _cache.Set(CacheKeys.Entry, cacheEntry, cacheEntryOptions);
      }

      return View("Cache", cacheEntry);
   }

}

更新CacheKeys.Entryすべてのキーが定義されている静的クラスです。(コーディング標準のみ)。上記のドキュメントリンクを確認してください。

public static class CacheKeys
{
   public static string Entry { get { return "_Entry"; } }
   public static string CallbackEntry { get { return "_Callback"; } }
   public static string CallbackMessage { get { return "_CallbackMessage"; } }
   public static string Parent { get { return "_Parent"; } }
   public static string Child { get { return "_Child"; } }
   public static string DependentMessage { get { return "_DependentMessage";} }
   public static string DependentCTS { get { return "_DependentCTS"; } }
   public static string Ticks { get { return "_Ticks"; } }
   public static string CancelMsg { get { return "_CancelMsg"; } }
   public static string CancelTokenSource { get { return "_CancelTokenSource";} }   
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

キャッシュに保存されているデータを確認する方法はありますか?

分類Dev

URLSession / URLConfigurationによって保存されたキャッシュデータをクリアする方法は?

分類Dev

値ではなく参照としてデータをDjangoキャッシュに保存する方法。

分類Dev

キャッシュ交換時にキャッシュセット内のデータを出力する方法は?

分類Dev

Rのリストにデータをキャッシュする方法は?

分類Dev

サーバーキャッシュPHPにビデオを保存する方法

分類Dev

AngularJSはキャッシュデータをどこに保存しますか

分類Dev

キャッシュ用に多数のパンダデータフレームを保存する方法の提案

分類Dev

symfonyがデータをキャッシュに保存する問題

分類Dev

ASP .NET Core:ユーザー入力に依存するデータをキャッシュする方法は?

分類Dev

ビデオをフラッターにキャッシュする方法

分類Dev

キャッシュではなくPostgreSQL実データベースにクエリを実行する方法は?

分類Dev

apollo-iosディスクにデータをキャッシュする方法は?

分類Dev

非同期データの取得とキャッシュを改善する方法は?

分類Dev

キャッシュメモリからデータを取得する方法は?

分類Dev

Windowsフォームでローカルデータキャッシュを無効にする方法は?

分類Dev

Spring API Restでデータをキャッシュする方法

分類Dev

キャッシュされたKeycloakデータを永続データストアに保存するにはどうすればよいですか?

分類Dev

Kingfisher は RAM にデータをキャッシュします。

分類Dev

キャッシュのメタデートを保存するためにキャッシュに必要なメモリを計算しますか?

分類Dev

node.jsにデータをキャッシュする最も安い方法は?

分類Dev

データが変更されたときにのみキャッシュを更新する方法は?

分類Dev

データURLjpgキャッシュを無効にする

分類Dev

Funkloadはキャッシュされたデータを保存しますか?

分類Dev

データベースにキャッシュに保存されている同じデータの変更値がある場合にキャッシュ値を更新する方法

分類Dev

CakePHP-データベースにキャッシュを保存し、Javascriptで使用する

分類Dev

WordPressのキャッシュ機能はどこにデータを保存しますか?

分類Dev

Cache <String、byte []>のキャッシュをApacheIgniteに保存する方法は?

分類Dev

ビデオをキャッシュに保存する

Related 関連記事

  1. 1

    キャッシュに保存されているデータを確認する方法はありますか?

  2. 2

    URLSession / URLConfigurationによって保存されたキャッシュデータをクリアする方法は?

  3. 3

    値ではなく参照としてデータをDjangoキャッシュに保存する方法。

  4. 4

    キャッシュ交換時にキャッシュセット内のデータを出力する方法は?

  5. 5

    Rのリストにデータをキャッシュする方法は?

  6. 6

    サーバーキャッシュPHPにビデオを保存する方法

  7. 7

    AngularJSはキャッシュデータをどこに保存しますか

  8. 8

    キャッシュ用に多数のパンダデータフレームを保存する方法の提案

  9. 9

    symfonyがデータをキャッシュに保存する問題

  10. 10

    ASP .NET Core:ユーザー入力に依存するデータをキャッシュする方法は?

  11. 11

    ビデオをフラッターにキャッシュする方法

  12. 12

    キャッシュではなくPostgreSQL実データベースにクエリを実行する方法は?

  13. 13

    apollo-iosディスクにデータをキャッシュする方法は?

  14. 14

    非同期データの取得とキャッシュを改善する方法は?

  15. 15

    キャッシュメモリからデータを取得する方法は?

  16. 16

    Windowsフォームでローカルデータキャッシュを無効にする方法は?

  17. 17

    Spring API Restでデータをキャッシュする方法

  18. 18

    キャッシュされたKeycloakデータを永続データストアに保存するにはどうすればよいですか?

  19. 19

    Kingfisher は RAM にデータをキャッシュします。

  20. 20

    キャッシュのメタデートを保存するためにキャッシュに必要なメモリを計算しますか?

  21. 21

    node.jsにデータをキャッシュする最も安い方法は?

  22. 22

    データが変更されたときにのみキャッシュを更新する方法は?

  23. 23

    データURLjpgキャッシュを無効にする

  24. 24

    Funkloadはキャッシュされたデータを保存しますか?

  25. 25

    データベースにキャッシュに保存されている同じデータの変更値がある場合にキャッシュ値を更新する方法

  26. 26

    CakePHP-データベースにキャッシュを保存し、Javascriptで使用する

  27. 27

    WordPressのキャッシュ機能はどこにデータを保存しますか?

  28. 28

    Cache <String、byte []>のキャッシュをApacheIgniteに保存する方法は?

  29. 29

    ビデオをキャッシュに保存する

ホットタグ

アーカイブ