関数のベストプラクティス
この記事では、メモリと実行時間の制限を超えないための関数のベストプラクティスを提供します。
実行時間を決定するためのテストを実行する
データ変換関数の実行時間は150ミリ秒に制限されています。イベントと訪問の関数は、実行時間が10秒に制限されています。
関数の実行時間に影響を与える要素は多くあります。関数が許された時間内に実行できるかを確認するためには、予想されるイベントペイロードで複数のテストを実行します。
ユニバーサルデータオブジェクト(UDO)を正規化する
データレイヤーには、イベントが発生したページに関する基本情報が含まれています。UDOは、特定のイベントタイプの情報を含むより動的な構造で、これはイベントのサイズが変動する可能性があることを意味します。推奨される最大イベントサイズは50KBです。データをコンパクトに保つために、冗長なデータエントリを削除します。同じデータが複数のフィールド(例えば、データレイヤーとUDO)に存在する場合、それはUDOからの削除候補です。特定のイベントタイプに必要ないデータの塊も、イベントUDOからの削除候補です。
標準モジュールの部分的なインポートを使用する
実行環境は、CryptoESを含む部分的なインポートをサポートする標準モジュールを提供します。
モジュール全体をインポートするのではなく、必要な機能だけをインポートします。例えば:
import { MD5 } from 'crypto-es/lib/md5.js';
デバッグ用のログメッセージの使用を避ける
関数を本番環境に公開する前に、デバッグ目的で使用されるconsole.log
メッセージを削除またはコメントアウトします。
例えば、ログに全イベントを送るためにJSON.stringify
を使用するのを避けます。代わりに、次の例のように特定の変数のログメッセージを使用します:
console.log(event.data.udo.property_to_track);
flatten()組み込みモジュールを使用する
組み込みのflatten()
モジュールは、任意のネストされたオブジェクトをフラット化するために使用できます。これは、データ変換関数に特に有用です。変換関数は、オブジェクトの配列やネストされたオブジェクトなどのネストされたデータ構造を扱うことができますが、入力イベントをフラット化する必要があります。
JavaScriptの最適化を使用する
配列やオブジェクトのプロパティを反復処理するなど、集中的なタスクにはJavaScriptの最適化を使用します。
配列の反復処理の例
const array = [1, 2, 3];
const arrayLength = array.length;
for (let i = 0; i < arrayLength; i++) {
const arrayItem = array[i];
}
オブジェクトのプロパティの反復処理の例
const obj = { a: 1, b: 2, c: 3 };
const keys = Object.getOwnPropertyNames(obj);
const keysLength = keys.length;
for (let i = 0; i < keysLength; i++) {
const keyName = keys[i];
const value = obj[keyName];
}
最終更新日 :: 2024年March月29日