{
  "title": "GraphQL Caching",
  "slug": "gql-caching",
  "collection": "blog",
  "contentType": "Blog post",
  "description": "Since the GraphQL specification aims to be as general as possible, caching has been considered out-of-scope for the spec itself",
  "summary": "Since the GraphQL specification aims to be as general as possible, caching has been considered out-of-scope for the spec itself",
  "author": {
    "name": "Anthony Campolo"
  },
  "source": {
    "originalUrl": "https://ajcwebdev.com/gql-caching/"
  },
  "publishedAt": "2020-11-10T00:00:00.000Z",
  "updatedAt": null,
  "freshness": {
    "label": "Published",
    "value": "2020-11-10T00:00:00.000Z"
  },
  "urls": {
    "html": "https://ajcwebdev.com/gql-caching/",
    "markdown": "https://ajcwebdev.com/gql-caching/index.md",
    "json": "https://ajcwebdev.com/gql-caching/index.json"
  },
  "headings": [
    {
      "depth": 2,
      "id": "introduction",
      "text": "Introduction"
    },
    {
      "depth": 2,
      "id": "does-the-graphql-specification-address-caching",
      "text": "Does the GraphQL Specification Address Caching"
    },
    {
      "depth": 2,
      "id": "http-caching",
      "text": "HTTP Caching"
    },
    {
      "depth": 3,
      "id": "client-side-and-gateway-caches",
      "text": "Client Side and Gateway Caches"
    },
    {
      "depth": 3,
      "id": "freshness-and-validation",
      "text": "Freshness and Validation"
    },
    {
      "depth": 2,
      "id": "graphql-caching",
      "text": "GraphQL Caching"
    },
    {
      "depth": 3,
      "id": "globally-unique-ids",
      "text": "Globally Unique IDs"
    },
    {
      "depth": 3,
      "id": "compatibility-with-existing-apis",
      "text": "Compatibility with Existing APIs"
    },
    {
      "depth": 3,
      "id": "alternatives",
      "text": "Alternatives"
    },
    {
      "depth": 2,
      "id": "apollo-client",
      "text": "Apollo Client"
    },
    {
      "depth": 3,
      "id": "inmemorycache",
      "text": "InMemoryCache"
    },
    {
      "depth": 3,
      "id": "data-normalization",
      "text": "Data Normalization"
    },
    {
      "depth": 3,
      "id": "readquery",
      "text": "readQuery"
    },
    {
      "depth": 3,
      "id": "readfragment",
      "text": "readFragment"
    },
    {
      "depth": 3,
      "id": "writequery-and-writefragment",
      "text": "writeQuery and writeFragment"
    },
    {
      "depth": 3,
      "id": "combining-reads-and-writes",
      "text": "Combining Reads and Writes"
    },
    {
      "depth": 3,
      "id": "modify-cache",
      "text": "Modify Cache"
    },
    {
      "depth": 2,
      "id": "urql",
      "text": "urql"
    },
    {
      "depth": 2,
      "id": "micro-graphql-react",
      "text": "micro-graphql-react"
    },
    {
      "depth": 3,
      "id": "import-client-for-global-subscriptions-to-keep-cache-correct",
      "text": "Import client for global subscriptions to keep cache correct"
    },
    {
      "depth": 3,
      "id": "sync-changes-when-relevant-mutations-happen",
      "text": "Sync changes when relevant mutations happen"
    },
    {
      "depth": 3,
      "id": "cache-resetting",
      "text": "Cache Resetting"
    },
    {
      "depth": 2,
      "id": "section-and-distributed-graphql",
      "text": "Section and Distributed GraphQL"
    },
    {
      "depth": 2,
      "id": "persistent-queries",
      "text": "Persistent Queries"
    },
    {
      "depth": 2,
      "id": "resources",
      "text": "Resources"
    }
  ],
  "tags": [
    "web",
    "graphql"
  ],
  "discovery": {
    "apiIndex": "https://ajcwebdev.com/api/index.json",
    "llmsTxt": "https://ajcwebdev.com/llms.txt",
    "llmsFullTxt": "https://ajcwebdev.com/llms-full.txt",
    "sitemapMd": "https://ajcwebdev.com/sitemap.md",
    "sitemapXml": "https://ajcwebdev.com/sitemap.xml"
  },
  "nextActions": [
    {
      "action": "open_html",
      "url": "https://ajcwebdev.com/gql-caching/",
      "method": "GET",
      "accept": "text/html"
    },
    {
      "action": "get_markdown_twin",
      "url": "https://ajcwebdev.com/gql-caching/index.md",
      "method": "GET",
      "accept": "text/markdown"
    },
    {
      "action": "get_json_twin",
      "url": "https://ajcwebdev.com/gql-caching/index.json",
      "method": "GET",
      "accept": "application/json"
    }
  ]
}