【问题标题】:Is there any way to implement server-side caching using Apollo-server 2.x?有没有办法使用 Apollo-server 2.x 实现服务器端缓存?
【发布时间】:2019-06-22 04:51:58
【问题描述】:

目前我正在为我的应用程序使用“GrandStack”。我的挑战 我面临着缓存。我想在客户端和客户端都维护缓存 后端。

在客户处:

我正在使用 React Js,Apollo 客户端:默认情况下,Apollo 客户端在应用程序级别维护一个存储(使用 Apollo 提供的客户端包装整个应用程序)

这里是 .. 如果我导航到任何访问过的页面,数据应该服务器 即使在页面刷新时也从缓存中获取

在后端: 我正在使用 Apollo-server 2 + express + Neo4j 作为 DB

有没有办法在服务器缓存“客户端请求”?如果用户点击相同 向服务器请求数据应该来自服务器缓存?

请帮我提供一些参考代码。在此先感谢。

【问题讨论】:

    标签: reactjs graphql apollo-client apollo-server


    【解决方案1】:

    对于相同的场景,我实现了 LRU 缓存,其中我将查询存储为键,将响应存储为值。

    const LRU = require("lru-cache")
    
    const lruCache = new LRU({
        maxElements: 1000,
        length: (n, key) => {
            return n * 2 + key.length
        },
        dispose: function (key, n) {
            // n.close()
        },
        maxAge: 1000 * 60 * 60
    })
    

    设置值lruCache.set(key, value)并获取const data = lruCache.get(key);

    “key”是你的要求。

    还有其他选择,但这是最受欢迎的(我相信这就是)

    网址 - https://www.npmjs.com/package/lru-cache

    【讨论】:

    • 如果你想使用 radis 实现,也可以参考这个github.com/apollographql/apollo-server/tree/master/packages/…
    • 感谢您的建议,但我只关注 Apollo,Apollo + radis 是唯一的解决方案。
    • @AnuragGautam,Apollo 内部仅支持 Radis(据我所知)。一切都与您希望如何实现缓存有关。
    猜你喜欢
    • 2022-09-25
    • 2021-06-21
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2022-06-23
    • 2022-08-24
    相关资源
    最近更新 更多