Skip to content

Commit

Permalink
Allow disabling InMemoryCache result caching.
Browse files Browse the repository at this point in the history
Although this is a rather drastic option, creating an InMemoryCache that
does not attempt to cache previous results may help reduce memory usage,
at the expense of cache performance on repeated reads:

  new InMemoryCache({
    resultCaching: false, // defaults to true
  })

See this comment by @barbalex for one such situation:
#4210 (comment)

At the very least, this option should help diagnose problems with result
caching, even if it's not the right long-term solution.
  • Loading branch information
benjamn committed Dec 19, 2018
1 parent 307c8c9 commit cfc8fdf
Show file tree
Hide file tree
Showing 5 changed files with 463 additions and 263 deletions.
146 changes: 128 additions & 18 deletions packages/apollo-cache-inmemory/src/__tests__/__snapshots__/cache.ts.snap
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[
`Cache writeFragment will write some deeply nested data into the store at any id 1`
] = `
exports[`Cache writeFragment will write some deeply nested data into the store at any id (1/2) 1`] = `
Object {
"bar": Object {
"i": 7,
Expand All @@ -19,9 +17,7 @@ Object {
}
`;

exports[
`Cache writeFragment will write some deeply nested data into the store at any id 2`
] = `
exports[`Cache writeFragment will write some deeply nested data into the store at any id (1/2) 2`] = `
Object {
"bar": Object {
"i": 7,
Expand All @@ -42,9 +38,7 @@ Object {
}
`;

exports[
`Cache writeFragment will write some deeply nested data into the store at any id 3`
] = `
exports[`Cache writeFragment will write some deeply nested data into the store at any id (1/2) 3`] = `
Object {
"bar": Object {
"i": 10,
Expand All @@ -65,9 +59,7 @@ Object {
}
`;

exports[
`Cache writeFragment will write some deeply nested data into the store at any id 4`
] = `
exports[`Cache writeFragment will write some deeply nested data into the store at any id (1/2) 4`] = `
Object {
"bar": Object {
"i": 10,
Expand All @@ -88,9 +80,7 @@ Object {
}
`;

exports[
`Cache writeFragment will write some deeply nested data into the store at any id 5`
] = `
exports[`Cache writeFragment will write some deeply nested data into the store at any id (1/2) 5`] = `
Object {
"bar": Object {
"i": 7,
Expand All @@ -111,9 +101,129 @@ Object {
}
`;

exports[
`Cache writeFragment will write some deeply nested data into the store at any id 6`
] = `
exports[`Cache writeFragment will write some deeply nested data into the store at any id (1/2) 6`] = `
Object {
"bar": Object {
"i": 10,
"j": 11,
"k": 12,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": "Bar",
},
},
}
`;

exports[`Cache writeFragment will write some deeply nested data into the store at any id (2/2) 1`] = `
Object {
"bar": Object {
"i": 7,
},
"foo": Object {
"e": 4,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`Cache writeFragment will write some deeply nested data into the store at any id (2/2) 2`] = `
Object {
"bar": Object {
"i": 7,
"j": 8,
"k": 9,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`Cache writeFragment will write some deeply nested data into the store at any id (2/2) 3`] = `
Object {
"bar": Object {
"i": 10,
"j": 8,
"k": 9,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`Cache writeFragment will write some deeply nested data into the store at any id (2/2) 4`] = `
Object {
"bar": Object {
"i": 10,
"j": 11,
"k": 12,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`Cache writeFragment will write some deeply nested data into the store at any id (2/2) 5`] = `
Object {
"bar": Object {
"i": 7,
"j": 8,
"k": 9,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": "Bar",
},
},
}
`;

exports[`Cache writeFragment will write some deeply nested data into the store at any id (2/2) 6`] = `
Object {
"bar": Object {
"i": 10,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[
`MapCache Cache writeFragment will write some deeply nested data into the store at any id 1`
] = `
exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (1/2) 1`] = `
Object {
"bar": Object {
"i": 7,
Expand All @@ -19,9 +17,7 @@ Object {
}
`;

exports[
`MapCache Cache writeFragment will write some deeply nested data into the store at any id 2`
] = `
exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (1/2) 2`] = `
Object {
"bar": Object {
"i": 7,
Expand All @@ -42,9 +38,7 @@ Object {
}
`;

exports[
`MapCache Cache writeFragment will write some deeply nested data into the store at any id 3`
] = `
exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (1/2) 3`] = `
Object {
"bar": Object {
"i": 10,
Expand All @@ -65,9 +59,7 @@ Object {
}
`;

exports[
`MapCache Cache writeFragment will write some deeply nested data into the store at any id 4`
] = `
exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (1/2) 4`] = `
Object {
"bar": Object {
"i": 10,
Expand All @@ -88,9 +80,7 @@ Object {
}
`;

exports[
`MapCache Cache writeFragment will write some deeply nested data into the store at any id 5`
] = `
exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (1/2) 5`] = `
Object {
"bar": Object {
"i": 7,
Expand All @@ -111,9 +101,7 @@ Object {
}
`;

exports[
`MapCache Cache writeFragment will write some deeply nested data into the store at any id 6`
] = `
exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (1/2) 6`] = `
Object {
"bar": Object {
"i": 10,
Expand All @@ -134,9 +122,129 @@ Object {
}
`;

exports[
`MapCache writing to the store throws when trying to write an object without id that was previously queried with id 1`
] = `
exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (2/2) 1`] = `
Object {
"bar": Object {
"i": 7,
},
"foo": Object {
"e": 4,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (2/2) 2`] = `
Object {
"bar": Object {
"i": 7,
"j": 8,
"k": 9,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (2/2) 3`] = `
Object {
"bar": Object {
"i": 10,
"j": 8,
"k": 9,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (2/2) 4`] = `
Object {
"bar": Object {
"i": 10,
"j": 11,
"k": 12,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": undefined,
},
},
}
`;

exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (2/2) 5`] = `
Object {
"bar": Object {
"i": 7,
"j": 8,
"k": 9,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": "Bar",
},
},
}
`;

exports[`MapCache Cache writeFragment will write some deeply nested data into the store at any id (2/2) 6`] = `
Object {
"bar": Object {
"i": 10,
"j": 11,
"k": 12,
},
"foo": Object {
"e": 4,
"f": 5,
"g": 6,
"h": Object {
"generated": false,
"id": "bar",
"type": "id",
"typename": "Bar",
},
},
}
`;

exports[`MapCache writing to the store throws when trying to write an object without id that was previously queried with id 1`] = `
"Error writing result to store for query:
query Failure {
item {
Expand Down
Loading

0 comments on commit cfc8fdf

Please sign in to comment.