Jonas Bergqvist
Feb 28, 2025
visibility 2083
star star star star star
(6 votes)

Optimizely Graph Cache: The Power of "Item"

In the world of content delivery, speed is king. A high cache hit ratio is the secret weapon for delivering snappy performance and happy users. But how do you achieve that? One powerful trick lies in understanding the difference between "items" and "item" in your GraphQL queries.

The Cache Challenge: Lists vs. Specifics

GraphQL's flexibility often leads to queries fetching lists ("items"). While necessary for many scenarios, this can hinder caching. Why? Because even a list with one item requires the cache to consider potential changes to any content, leading to frequent cache invalidations.

The "Item" Advantage: Precision Caching

Enter the "item" query. When you request a single item by its unique identifier, you unlock granular, efficient caching.

How to Leverage "Item" for Optimal Caching:

  • Improve Cache Hit Ratio: Swap "items" for "item" when fetching a single entity. It's a small change with big results.
  • Unique Identifier-Driven Queries: Only use "item" when targeting a specific item via its unique identifier (relative paths, URLs, codes, etc.).

Cache hit example for query with "item"

Cache hit example for query with "items"

Practical Example

Instead of

query GetItem($relativePath: String) {
  Content(limit:1 where: { RelativePath: { eq: $relativePath } }) {
    items { Name }
  }
}

Use

query GetItem($relativePath: String) {
  Content(where: { RelativePath: { eq: $relativePath } }) {
    item { Name }
  }
}

Conclusion

Using "item" for single entity retrieval based on unique identifiers dramatically improves cache hit ratios, enhancing performance and user experience. It's a simple, powerful technique to unlock the full potential of your GraphQL cache.

Feb 28, 2025

Comments

Surjit Bharath
Surjit Bharath Mar 17, 2025 02:19 PM

5 star tip. Thanks Jonas

error Please login to comment.
Latest blogs
Optimizely SaaS CMS Management API: The Write Side of Headless

Everything I’ve written in this series so far has been about reading content — Optimizely Graph, webhooks, ISR, caching layers. But at some point y...

Kiran Patil | Aug 12, 2026 |

Assistants, Instructions and Statistics

We are introducing three new features for AI Assistant in Optimizely CMS. They make it easier to reuse AI expertise, work faster and understand how...

Luc Gosso (MVP) | Aug 11, 2026 |

Optimizely Commerce 14 Now Supports .NET 10

In my previous post, Optimizely CMS 12 Now Fully Supports .NET 10 , I noted one remaining limitation: Commerce 14 (Commerce Connect) did not yet...

Bien Nguyen | Aug 7, 2026

The Top 10 Things I'm Actually Using AI For

A while back I wrote about ReviewPR, an Azure Function that uses AI to review Azure DevOps pull requests. That was one specific use case, but over...

KennyG | Aug 5, 2026

Drag-and-Drop Reordering for Commerce Media Collection in Optimizely Commerce Connect

Optimizely Commerce Connect ships a polished asset editor for the CommerceMediaCollection  property on catalog entries. It lets editors add, remove...

Linh Doan Cuu | Aug 5, 2026

Order tabs with drag and drop V2

I earlier did a very simple Blazor version to be able to sort tabs with drag and drop. I wanted to update it a bit and also display how the tabs ar...

Per Nergård (MVP) | Aug 4, 2026