您现在的位置是:主页 > news > 云南 网站建设网站/合肥seo优化排名公司

云南 网站建设网站/合肥seo优化排名公司

admin2025/5/7 14:29:43news

简介云南 网站建设网站,合肥seo优化排名公司,网站定制开发费用多少,iis建多个网站我们在Web应用程序中使用apollo客户端,并正在寻找提高缓存使用率的方法 .我们有一个查询,它将一个id数组作为参数,带有ids foo 和 bar 的示例查询将如下所示:query routes {routes(routeNames: ["foo", "bar"…

云南 网站建设网站,合肥seo优化排名公司,网站定制开发费用多少,iis建多个网站我们在Web应用程序中使用apollo客户端,并正在寻找提高缓存使用率的方法 .我们有一个查询,它将一个id数组作为参数,带有ids foo 和 bar 的示例查询将如下所示:query routes {routes(routeNames: ["foo", "bar"…

我们在Web应用程序中使用apollo客户端,并正在寻找提高缓存使用率的方法 .

我们有一个查询,它将一个id数组作为参数,带有ids foo 和 bar 的示例查询将如下所示:

query routes {

routes(routeNames: ["foo", "bar"]) {

items {

name

route

defaults

}

}

}

缓存设置如下所示:

export const cacheRedirects = {

Query: {

routes: (_: any, args: RoutesArgs, { getCacheKey }: Resolver): Array =>

args.routeNames.map(name => getCacheKey({ __typename: 'Route', name })),

},

};

export const dataIdFromObject = (object: QueryResult): ?string => {

switch (object.__typename) {

case 'Route':

return `${object.__typename}:${object.name}`;

default: return defaultDataIdFromObject(object);

}

};

export function newCache(): InMemoryCache {

return new InMemoryCache({ dataIdFromObject, cacheRedirects });

}

现在,当我们在客户端的几个地方使用查询时,我们只想获取未通过网络缓存的routeNames的数据,并通过缓存检索其余的数据 .

所以问题可以归结为:当有一个查询缓存 routeNames: ["foo", "bar"] 的结果时,后来另一个查询出现请求 routeNames: ["bar", "baz"] 的路由,我们很乐意从缓存中获取对应于 "bar" 的结果并发送 routeNames: ["baz"] 的查询 .

我不确定是否以及如何用Apollo完成这项工作,因为与cacheRedirect example相比,我们处理多个ID而不是单个ID .

现在,如果我们无法对每个数组项进行缓存,那么我们可以做的另一件好事就是将id转换为公共缓存键,以便 ["foo", "bar"] 和 ["bar", "foo"] 最终使用相同的缓存键,但 ["foo", "baz"] 将使用不同的缓存键 .

当然,最理想的是只将 "baz" 作为我们场景中缺失的项目 .