CheRock . devhack :ノードの単純なキャッシュ.Azure関数


Azure関数は、ボックスのキャッシュ機構を持たない.キャッシュするために、推奨される方法はAzureキャッシュまたはREDISのような分散キャッシュを使用することです.これらのサービスは、それぞれの価格タグが付属し、あまりにも作成したり、必要なキャッシュのための堅牢される可能性があります.
C≧で作成されたAzure関数では、良い古いmemory cacheを使用できます.あなたの関数が既に暖められて、処理されたデータが一度であるならば、あなたははるかに速く結果を返すことができます.

Important: Memory cache is per instance, so when running on a consumption plan, and when it scales to multiple instances, the memory cache needs to rebuild itself. If you run on a massive scale, it's better to use a distributed caching system.



しかし、どのようなノードです.JS ?
ノードの最も簡単なオプション.JavaScript/タイプスクリプト関数はnode-cacheと呼ばれるライブラリを使うことです.
ライブラリは、getsetなどを可能にする単純なキャッシュモジュールを提供します.これは、メモリキャッシュで何ができるか非常に同様に動作します.
例:
import { AzureFunction, Context, HttpRequest } from "@azure/functions";
import * as NodeCache from 'node-cache';

const fncCache = new NodeCache();

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
  // Check if there is a value in the cache
  const cachedName = fncCache.get("name");
  if (cachedName) {
      context.res = {
          // status: 200, /* Defaults to 200 */
          body: `Cached name: ${cachedName}`
      };
      return;
  }

  // Read the provided name
  const name = (req.query.name || (req.body && req.body.name));

  // Set value in the cache
  fncCache.set("name", name);

  context.res = {
    body: `Provided name: ${name}`
  };
};

export default httpTrigger;
コードスニペットは単純な例ですが、これは非常に有用です.たとえば、データを取得して関数呼び出しに渡す場合.関数が呼び出されるたびにAPIを呼び出す代わりにキャッシュされたデータを返すことができます.また、グローバルレベルまたはローカル/キーレベルの期限を指定することができます.この有効期限はあなたのデータを新鮮に保つのに便利ですが、あまりにも多くの呼び出しを持っていません.