如何处理大型嵌套对象的缓存

Posted

技术标签:

【中文标题】如何处理大型嵌套对象的缓存【英文标题】:How to handle cacheing with big nested objects 【发布时间】:2018-10-17 14:55:01 【问题描述】:

我有一个带有一堆嵌套对象字段的 graphql 对象,如下所示:

object
    field1
    field2
    field3
    field4 
        field4.1
        field4.2 
            field4.2.1
        
    
    field5 
        field5.1
            field 5.1.1
            field 5.1.2

        
    
    field 6
    field 7

问题在于 field4 和 field5 没有唯一标识符,并且它们对于对象始终是唯一的。我不希望它尝试缓存这些对象,而是只缓存整个对象,因为子字段对于父对象是唯一的。

我如何告诉客户端我不想尝试缓存这些子字段,而只是将对象作为一个整体进行缓存?

【问题讨论】:

【参考方案1】:

我做了以下来解决这个问题

const blackList = new Set()
new InMemoryCache(
  dataIdFromObject: (o: any) => 
    if (o.__typename != null) 
       if (cacheBlacklist.has(o.__typename)) 
          return null
        
        ...
    

【讨论】:

以上是关于如何处理大型嵌套对象的缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何处理常见的JSON嵌套结构

如何处理没有其他关系的实体中的嵌套对象

Spring如何处理循环引用

如何处理对尚不存在的对象的 ID 引用的 RestKit 嵌套数组?

Play 2.2 JSON Reads with combinators:如何处理嵌套的可选对象?

如何处理大型mongodb集合