カスタムコンポーネントの HTTP キャッシュ

Salesforce では、最新バージョンのコンポーネントが HTTP キャッシュによって保存されます。このキャッシュの Time to Live (TTL) は 5 分ですが、stale-while-revalidate ディレクティブによって 10 まで延長できます。コンポーネントの HTTP キャッシュは、コードの変更が UI に表示されるまでに最大 10 分かかることを意味します。このディレクティブは Safari 以外のすべてのサポート対象ブラウザーに適用されます。ブラウザーは、キャッシュの有効期限が切れた後もキャッシュからファイルを提供し続け、同時に新しいコピーを要求します。

デバッグ中やテスト中にコンポーネントの更新を遅延なく確認するには、デバッグモードを有効化します。

[セッションの設定] 設定ページの [パフォーマンスを向上させるためにブラウザーの安全で永続的なキャッシュを有効にする] オプションは、カスタムコンポーネントの HTTP キャッシュには影響しません。

Lightning Experience のブートストラップ中にコンポーネント定義がプリロードされる場合、ブートストラップの完了後は、キャッシュからコンポーネント定義が提供されます。そうでない場合は、ブラウザーがコンポーネント定義の最新バージョンを要求します。サーバーは、コンポーネントの特定のバージョンへの 302 リダイレクトで応答します。

Chrome DevTools でリダイレクトを確認するには、[Network (ネットワーク)] パネルの [Headers (ヘッダー)] タブを開きます。リダイレクトを含む要求 URL には uid=LATEST パラメーターがあり、ステータスコードは 302 です。次に例を示します。

リダイレクトは、次の URL を指しており、その URL には uid=117337808 パラメーターが含まれ、ステータスコードは 200 です。次に例を示します。

コンポーネントのバージョンはいつでも変更される可能性があるため、リダイレクトによってブラウザーにコンポーネントの最新バージョンを確実に渡されます。

カスタムコンポーネントは、次の応答ディレクティブを含む Cache-Control HTTP ヘッダーを返します。

  • private - ブラウザーのローカルキャッシュなど、非公開キャッシュにのみレスポンスを保存できることを示します。
  • max-age=300 - 応答が生成されてから 300 秒後まで、応答が最新であることを示します。キャッシュがこの応答を保存可能で、最新の間は以降の要求に対して再利用できることを示します。
  • stale-while-revalidate=300 - キャッシュに対して再検証を行う間、キャッシュの古い応答を再利用できることを示します。

有効期限が切れた後も (以降の 5 分間)、ブラウザーまたは CDN がコンポーネントの新しいコピーを要求している間、stale-while-revalidate によってキャッシュからファイルを提供し続けることが可能です。したがって、ブラウザーは、指定されたコンポーネントについて最大 10 分間サーバーと同期できていない状態になる可能性があります。このディレクティブは Safari 以外のすべてのサポート対象 Lightning Experience ブラウザーに適用されます。

ヘッダーのキャッシュはデバッグモードのコンポーネントには適用されません。

関連トピック