CheRock . devhack :ノードの単純なキャッシュ.Azure関数
5284 ワード
Azure関数は、ボックスのキャッシュ機構を持たない.キャッシュするために、推奨される方法はAzureキャッシュまたはREDISのような分散キャッシュを使用することです.これらのサービスは、それぞれの価格タグが付属し、あまりにも作成したり、必要なキャッシュのための堅牢される可能性があります.
C≧で作成されたAzure関数では、良い古いmemory cacheを使用できます.あなたの関数が既に暖められて、処理されたデータが一度であるならば、あなたははるかに速く結果を返すことができます.
しかし、どのようなノードです.JS ?
ノードの最も簡単なオプション.JavaScript/タイプスクリプト関数はnode-cacheと呼ばれるライブラリを使うことです.
ライブラリは、
例:
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と呼ばれるライブラリを使うことです.
ライブラリは、
get
、set
などを可能にする単純なキャッシュモジュールを提供します.これは、メモリキャッシュで何ができるか非常に同様に動作します.例:
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を呼び出す代わりにキャッシュされたデータを返すことができます.また、グローバルレベルまたはローカル/キーレベルの期限を指定することができます.この有効期限はあなたのデータを新鮮に保つのに便利ですが、あまりにも多くの呼び出しを持っていません.Reference
この問題について(CheRock . devhack :ノードの単純なキャッシュ.Azure関数), 我々は、より多くの情報をここで見つけました https://dev.to/estruyf/devhack-simple-caching-in-node-js-azure-functions-1gf1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol