NodeCache EVM
← Back to blog

Achieving Faster Ethereum RPC: Caching Redundant Calls for Developers

Achieving Faster Ethereum RPC: Caching Redundant Calls for Developers
Photo by Shutter Speed on Unsplash

September 27, 2026

As an Ethereum developer or a backend/infra engineer, you've likely encountered the challenge of needing faster Ethereum RPC responses for your applications or indexers. Whether you're building a dApp, a data analytics service, or a wallet, the core interaction often involves querying the blockchain for state. But what happens when your application repeatedly asks for the same data, only to find it hasn't changed?

The Challenge of Redundant Ethereum RPC Calls

Consider an application that frequently checks user balances, monitors specific contract states, or tracks logs for certain events. Your code might be executing eth_getBalance in a polling loop, calling eth_call on a read-only contract method every few seconds, or repeatedly querying eth_getLogs for a fixed time range. Each of these interactions translates to a distinct RPC request against your chosen provider, such as Infura or Alchemy.

The pain point is clear: you're making repeated read-only RPC calls — eth_call, eth_getBalance, eth_getLogs — over and over. Many of these calls retrieve data that hasn't actually changed since your last query. This pattern drives up your operational costs, as most providers charge per request, and it quickly pushes you against rate limits, leading to throttled requests and degraded application performance. There's no caching layer sitting in front of the endpoint to intelligently catch these requests for data that hasn't changed.

This issue doesn't merely represent an occasional inefficiency; it's a fundamental scaling challenge. As your application's user base grows or its demand for real-time data increases, the volume of RPC requests often scales linearly. Your application's RPC consumption scales directly with the number of times it asks for data, not necessarily with the actual frequency of state changes on the blockchain. This means you're incurring costs and consuming rate limit quotas based on request volume, rather than the true novelty of the data being retrieved. Without an intelligent caching mechanism, every request is treated as a fresh query to the underlying blockchain node, regardless of whether the data has been fetched moments before.

This approach to data retrieval is particularly inefficient for read-heavy operations where the underlying blockchain state changes relatively infrequently compared to the rate at which applications poll for updates. For instance, a user's token balance might only change when they execute a transaction, but your application might check it every few seconds. Similarly, the code of a deployed contract (eth_getCode) remains static, yet it might be queried multiple times during an application's lifecycle. These patterns create unnecessary load on RPC providers and, consequently, on your budget and application's reliability.

NodeCache: Your Solution for Efficient Ethereum RPC

Addressing this requires a strategic caching layer that understands the nature of EVM RPC calls. NodeCache provides this solution by acting as an intelligent caching proxy for read-only JSON-RPC calls. It sits between your application and your RPC provider, intercepting requests and serving cached responses where possible.

NodeCache is designed to cache responses for specific read-only EVM RPC methods, including eth_call, eth_getBalance, eth_getCode, eth_getLogs, eth_blockNumber, and eth_chainId. Each of these methods can be configured with its own method-appropriate Time-To-Live (TTL). This allows you to fine-tune how long responses for different types of data are considered fresh. For example, eth_blockNumber might have a very short TTL to reflect rapid block progression, while eth_getCode could have a much longer TTL, as contract code rarely changes. When your application makes a request for data that has a valid cached entry, NodeCache serves that entry directly, eliminating the need to forward the request to your RPC provider.

It's important to note that NodeCache focuses exclusively on read-only operations. It does not proxy or cache state-changing methods, such as transaction submissions. Its current implementation supports Ethereum mainnet only, providing a focused solution for optimizing your primary Ethereum interactions.

By intelligently caching these frequently requested, yet often static, pieces of data, NodeCache reduces the number of redundant RPC calls that reach your provider, allowing your application to retrieve commonly accessed data directly from the cache.

Frequently asked questions

What is NodeCache?

NodeCache is an intelligent caching proxy designed for read-only Ethereum JSON-RPC calls. It sits between your application and your RPC provider, intercepting requests and serving cached responses to reduce redundant calls.

Which Ethereum RPC methods does NodeCache cache?

NodeCache caches responses for specific read-only EVM RPC methods including eth_call, eth_getBalance, eth_getCode, eth_getLogs, eth_blockNumber, and eth_chainId. Each method can be configured with its own Time-To-Live (TTL).

What are the current limitations of NodeCache?

NodeCache focuses exclusively on read-only operations and does not proxy or cache state-changing methods like transaction submissions. Currently, it supports Ethereum mainnet only.

Implementing a caching layer like NodeCache allows you to reduce the number of requests sent to your RPC provider by serving cached responses for repeated read-only queries. Explore how NodeCache can cache your Ethereum RPC interactions today.

Start caching your Ethereum RPC interactions with NodeCache.

Ethereum RPC · Caching · NodeCache · dApp development · Blockchain infrastructure · RPC optimization · EVM · Ethereum mainnet · JSON-RPC · Developer tools

Related Articles

All NodeCache EVM articles → · NodeCache EVM documentation →