oRPC Dedupe Requests Plugin
Prevents duplicate requests by deduplicating similar ones to reduce server load.
SKILL.mdskills/orpc-dedupe-requests/SKILL.md
GitHubDedupe Requests Plugin
Prevents redundant requests by deduplicating similar ones.
Usage
import { DedupeRequestsPlugin } from '@orpc/client/plugins'
const link = new RPCLink({
plugins: [
new DedupeRequestsPlugin({
filter: ({ request }) => request.method === 'GET',
groups: [
{ condition: () => true, context: {} },
],
}),
],
})
By default, only
GETrequests are deduplicated.
Groups
A request must match at least one group. Requests in the same group are deduplicated together.
Example: dedupe based on cache control:
interface ClientContext { cache?: RequestCache }
const link = new RPCLink<ClientContext>({
url: 'http://localhost:3000/rpc',
method: ({ context }) => context?.cache ? 'GET' : 'POST',
plugins: [
new DedupeRequestsPlugin({
filter: ({ request }) => request.method === 'GET',
groups: [
{
condition: ({ context }) => context?.cache === 'force-cache',
context: { cache: 'force-cache' },
},
{ condition: () => true, context: {} },
],
}),
],
fetch: (request, init, { context }) => globalThis.fetch(request, {
...init,
cache: context?.cache,
}),
})