Skip to content
Back to skills

Cache Function Results

ASecurity

Add caching to Datagrok functions using meta.cache annotations

  • 74 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
developmentjavascripttypescriptpythonjavasqlexpressdatabaseperformance

Works with

  • cli

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add datagrok-ai/public --skill cache-function-results --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cache Function Results?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cache Function Results
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/datagrok-ai-cache-function-results/badge)](https://www.skillsdirectory.com/skills/datagrok-ai-cache-function-results)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: cache-function-results
description: Add caching to Datagrok functions using meta.cache annotations
when-to-use: When user asks to cache function results, add memoization, or optimize repeated computations
effort: low
---

# Cache Function Results

Help the user add caching to Datagrok functions to improve performance by storing results for repeated calls with the same inputs.

## Usage
```
/cache-function-results [function-name] [--mode <client|server|all>]
```

## Instructions

### 1. Choose the cache mode

Add `meta.cache` annotation to the function header:

- `client` — stores results in the browser's IndexedDB
- `server` — stores results on the Datagrok server
- `all` — uses both client and server caches together

### 2. Add caching to a TypeScript/JavaScript function

```typescript
//name: Get Users
//meta.cache: all
//meta.cache.invalidateOn: 0 0 * * *
//output: dataframe result
export async function getUsers(): Promise<DG.DataFrame> {
  // Expensive operation — results will be cached
}
```

### 3. Add caching to a Python/R script

```python
#name: Example
#language: python
#meta.cache: client
#meta.cache.invalidateOn: 0 * * * *
#input: string table [Data table]
#output: int result

...
```

### 4. Add caching to a SQL query

```sql
--name: ActivityDetails
--connection: Chembl
--meta.cache: all
--meta.cache.invalidateOn: 0 0 * * *
--input: string target = "CHEMBL1827"
SELECT * FROM activity_details WHERE target_id = @target
--end
```

### 5. Set cache invalidation

Use `meta.cache.invalidateOn` with a cron expression to control when cached results expire:

| Cron expression | Meaning |
|----------------|---------|
| `0 * * * *` | Every hour |
| `0 0 * * *` | Every day at midnight |
| `0 0 * * 1` | Every Monday at midnight |
| `0 0 1 * *` | First day of each month |

If `meta.cache.invalidateOn` is not specified, the cache never expires automatically.

### 6. Cache all queries under a connection

Instead of annotating each query, enable caching at the connection level:

**Via UI:** Right-click the connection > **Edit...** > check **Cache Results** and optionally fill **Invalidate On**.

**Via connection JSON:**
```json
{
  "name": "Northwind",
  "parameters": {
    "server": "db.example.com",
    "port": 5432,
    "db": "mydb",
    "cacheResults": true,
    "cacheSchema": false
  }
}
```

### 7. Client-side cache limits

- Function output must be scalar (int, float, string) or dataframe, graphics, datetime
- Maximum cache size per function: 100 MB
- Maximum record count: 100,000
- Users enable it in **Settings > Cache > Client-side cache**

### 8. Server-side cache

- No restrictions on size or parameter types
- Users enable it in **Settings > Cache > Server-side cache**
- Works together with client-side cache when mode is `all`

## Behavior

- Default to `meta.cache: all` unless the user specifies a preference.
- Always suggest adding `meta.cache.invalidateOn` with an appropriate schedule — warn that without it the cache never refreshes.
- Only recommend caching for functions that are immutable (same input produces same output).
- Warn against caching database queries when the underlying data changes frequently.
- For connection-level caching, mention that it applies to all queries under that connection.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.