Dados Caching
O cache função allows você para cache o results de dados fetching ou computations. It fornece fine-grained control over dados e é suitable for scenarios such as Cliente-Side Rendering (CSR) e Servidor-Side Rendering (SSR).
Básico Uso
Parameters
fetchData: OfetchDatafunção em uma DataLoader.options(opcional): Cache configuração.tag: Uma tag para identify o cache, que pode ser usado para invalidate it.maxAge: O cache's validity period (em milliseconds).revalidate: Uma time window for revalidating o cache (em milliseconds), semelhante a ostale-while-revalidatefeature de HTTP Cache-Control.getKey: Uma simplified cache key generation função esse cria uma key based no função's arguments.onCache: Uma callback função for quando dados é cached, usado for custom handling de cached dados.
O tipo para o options parameter é as follows:
Return Valor
O cache função retorna uma nova fetchData função com caching capabilities. Calling este novo função multiple times vai não result em repeated execution.
Escopo de Use
Este função é apenas compatível for use within uma DataLoader.
Detailed Uso
maxAge
Depois each computation, o framework records o time o dados was written para o cache. Quando o função é chamada again, it checks se o cache has expired based no maxAge parameter. Se it has, o fn função é re-executed; caso contrário, o cached dados é retornado.
revalidate
O revalidate parameter sets uma time window for revalidating o cache depois it has expired. Ele pode ser usado com o maxAge parameter, semelhante a o stale-while-revalidate model de HTTP Cache-Control.
No seguintes exemplo, se getDashboardStats é chamada within o 2-minute non-expired window, ele retorna cached dados. Se o cache é expired (entre 2 e 3 minutes), incoming requests vai primeiro receive o old dados, e then uma nova request vai ser made no background para atualizar o cache.
tag
O tag parameter é usado para identify uma cache com uma label, que pode ser uma string ou um array de strings. Este tag pode ser usado para invalidate o cache, e multiple cache funções pode compartilhe o mesmo tag.
getKey
O getKey parameter allows você para customize como cache keys são generated. Por exemplo, você might apenas precisa rely on uma subset do função's parameters para differentiate caches. It é uma função esse receives o mesmo arguments as o original função e retorna uma string as o cache key:
Você pode também use o generateKey função com getKey para gerar cache keys:
O generateKey função ensures esse uma consistent, unique key é generated even se o order de objeto propriedades changes, guaranteeing stable caching.
customKey
Both customKey e getKey let você customize cache keys; o difference é escopo:
getKeyapenas overrides o "arguments" portion do key — o função itself still participates no cache-key computation. Two diferente funções whosegetKeyretorna o mesmo valor vai não compartilhe o cache.customKeyretorna o entire final cache key, replacing o framework's padrão "função + arguments" key. Ele pode therefore let diferente funções compartilhe o mesmo cache.
Se você apenas want para derive o cache key de some arguments, use getKey. Use customKey apenas quando você precisa compartilhe caches across funções ou similar advanced cases.
customKey receives um objeto com o seguintes propriedades e deve retornar uma string ou Symbol — esse valor é usado diretamente as o final cache key:
params: O arguments passed para o cached função.fn: O original cached função.generatedKey: O original cache key automatically generated pelo framework based no input parameters.
O exemplo below demonstrates como customKey enables cache compartilhamento across funções:
onCache
O onCache parameter allows você para track cache statistics, such as hit rates. It é uma callback função esse receives information about each cache operation, including its status, key, parameters, e result. Você pode retornar false de onCache para prevent uma cache hit.
O onCache callback receives um objeto com o seguintes propriedades:
status: O status do cache operation, que pode ser:hit: Cache hit, retorna cached content.miss: Cache miss, executes o função e caches o result.stale: Cache hit but o dados é stale, retorna cached content e revalidates no background.
key: O cache key, que may ser o result decustomKeyou o padrão generated key.params: O arguments passed para o cached função.result: O result dados (either do cache ou newly computed).
Este callback é apenas chamada quando o options parameter é fornecido. Ao usar uma cache função sem opções, o onCache callback é não invoked.
O onCache callback é very useful for:
- Monitoring cache performance.
- Calculating hit rates.
- Logging cache operations.
- Implementing custom metrics.
Storage
Atualmente, whether no cliente ou servidor, o cache é stored em memory. Por padrão, o shared storage limit for all cache funções é 1GB. Quando este limit é reached, o LRU (Least Recently Usado) algorithm é usado para remove old caches.
Considering esse o content cached pelo cache função é não expected para ser very large, it é currently stored em memory por padrão.
Você pode specify o cache storage limit usando o configureCache função: