You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apollo服务器端缓存:缓存的键值是什么?

在Apollo服务器中,缓存的键值(cache key)是由query和variables两个属性决定的。query属性表示查询语句的字符串,variables属性表示查询语句所需的变量,两者合并起来作为缓存的键值。

以下示例代码演示了如何使用实际查询和变量来生成唯一的缓存键值。

import { ApolloServer } from 'apollo-server-express';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { createHttpLink } from 'apollo-link-http';
import fetch from 'node-fetch';
import express from 'express';
import schema from './schema';

const app = express();

const httpLink = createHttpLink({
  uri: 'https://api.example.com/graphql',
  fetch: fetch,
});

const cache = new InMemoryCache();

const server = new ApolloServer({
  schema,
  cache,
  link: httpLink,
  context: ({ req }) => ({
    headers: req.headers,
  }),
  cacheControl: {
    defaultMaxAge: 86400,
  },
  plugins: [{
    requestDidStart(requestContext) {
      const query = requestContext.request.query;
      const variables = JSON.stringify(requestContext.request.variables);
      const cacheKey = `${query}:${variables}`;
      requestContext.context.cacheKey = cacheKey;
      return {
        willSendResponse(requestContext) {
          const { cacheKey } = requestContext.context;
          if (cacheKey) {
            const { response, cache } = requestContext;
            const { data } = response;
            cache.set(cacheKey, data);
          }
        },
      };
    },
  }],
});

server.applyMiddleware({
  app,
});

app.listen({ port: 4000 }, () =>
  console.log(`� Server ready at http://localhost:4000${server.graphqlPath}`)
);

在上面的示例代码中,我们使用了Apollo的requestDidStart插件,在请求开始时获取query和variables,并将两者合并成一个唯一的缓存键值(cache key),存储在请求上下文中,供后面使用。

然后

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

MySQL 8.0:新的身份验证插件(caching_sha2_password)

默认值和最小值是 5000,最大值 4095000;用于 caching\_sha2\_password 认证插件密码存储的哈希轮转次数。其次,caching\_sha2\_password 是在服务器端通过缓存解决性能问题。caching\_sha2\_password 插件使用内存缓存来为曾经连接过的客户端进行快速验证。内存缓存条目由username/SHA256(SHA256(user\_password))对组成。缓存的工作原理是这样的:1. 当客户端连接,caching\_sha2\_password 检查 username/SHA256(SHA256(use...

替换 Spring Cloud,使用基于 Cloud Native 的服务治理

Spring Cloud 这套体系和 Kubernetes 体系还是有一些交叠的。举例来说,Spring Cloud 有 Config Server(类似的有阿里开源的 Nacos、携程开源的 Apollo),Kubernetes 则有 ConfigMap、Secret 等,它本身也有配置能力,但... 提供了自上报的机制和客户端负载均衡,是一个 AP 系统。Kubernetes 则更像传统的云厂商,可帮助用户创建机器/容器。平台自然知道应用在哪里,就可以通过 DNS 以及服务端负载均衡帮助导流。这样的体验是截然不同的。...

替换 Spring Cloud,使用基于 Cloud Native 的服务治理

Spring Cloud 这套体系和 Kubernetes 体系还是有一些交叠的。举例来说,Spring Cloud 有 **Config Server** (类似的有阿里开源的 Nacos、携程开源的 Apollo),Kubernetes 则有 **ConfigMap** 、 **Secret** 等,它... 提供了自上报的机制和客户端负载均衡,是一个 AP 系统。Kubernetes 则更像传统的云厂商,可帮助用户创建机器/容器。平台自然知道应用在哪里,就可以通过 DNS 以及服务端负载均衡帮助导流。这样的体验是截然不同的。...

干货 | UniqueMergeTree:支持实时更新删除的ClickHouse表引擎

下面以SQLServer的Column Stores为例介绍下这个方案。图中,每个RowGroup对应一个不可变的列存文件,并用Bitmap来记录每个RowGroup中被标记删除的行号,即DeleteBitmap。处理更新的时候,先查找key所属的RowGroup以及它... 将写入key从原来的part里标记删除掉,最后将新数据写入新part里。为了实现上面的逻辑,我们为每个part新增了一个key index,用于加速从唯一键值到行号的查找。另外每个part包含多个delete file,每个delete file对应一...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Apollo服务器端缓存:缓存的键值是什么? -优选内容

配置缓存键值
视频点播支持在域名管理中配置缓存键值。本文为您介绍缓存键值的功能以及如何通过添加规则来配置缓存键值。 功能介绍在缓存文件时,视频点播使用缓存键值(cache key)来标记每个缓存中的每个文件。每个缓存键值包含了文件的 URI。URI 也包含 URI 的参数部分。例如,某个缓存文件的缓存键值是 /volcano.png?version=1。 在视频点播收到用户请求时,会使用请求的 URI 来匹配缓存中的缓存键值。如果匹配成功,则表示缓存命中。如果匹配失...
配置缓存键值
本文档介绍如何在火山引擎内容分发网络中通过创建缓存键规则来配置缓存键。 缓存缓存键是每个在缓存中的文件的唯一标识。在收到一个用户请求时,内容分发网络会对请求生成一个缓存键。通常情况下,缓存键包含 host... 键值规则。 根据配置说明进行设置。 配置完成后,在页面右上方,点击 提交编辑。 关于预设缓存键值规则在您添加域名时,内容分发网络会默认为您添加一条缓存键值规则。该规则对所有文件的请求生效。您可以修改该规则...
缓存概述
火山引擎内容分发网络依托于遍布在各地区的缓存节点使用户能就近访问源站的内容,实现访问加速。 在用户请求源站内容时,如果内容不在缓存节点,内容分发网络会先向源站请求内容,在将内容返回给用户的同时,缓存该内容,方便其他用户的访问。 内容分发网络负责管理缓存的内容以及缓存的相关配置。一般情况下,您无需手动配置。但是如果您有特定需求,可以配置以下缓存功能。 功能 描述 配置缓存键值 可自定义配置缓存键值,缓存时支持对请...
配置并测试 CDN 缓存键值功能
参数是不能被忽略的。不同参数的 URI 应该作为不同的文件进行缓存。 但也有一些情况,URI 参数和文件无关。比如 http://www.example.com/volcano.png?token=358ar7b。 这里的 token 参数表示一个认证信息。在这种情况下,参数是可以被忽略的。不同参数的 URI 应该作为同一个文件进行缓存。 在本教程中,我们将使用 TOS 对象存储服务作为 CDN 源站,测试缓存键值的不同配置以及对应的测试结果。 关于实验 预计部署时间:50分钟级别:初级...

Apollo服务器端缓存:缓存的键值是什么? -相关内容

MySQL 8.0:新的身份验证插件(caching_sha2_password)

默认值和最小值是 5000,最大值 4095000;用于 caching\_sha2\_password 认证插件密码存储的哈希轮转次数。其次,caching\_sha2\_password 是在服务器端通过缓存解决性能问题。caching\_sha2\_password 插件使用内存缓存来为曾经连接过的客户端进行快速验证。内存缓存条目由username/SHA256(SHA256(user\_password))对组成。缓存的工作原理是这样的:1. 当客户端连接,caching\_sha2\_password 检查 username/SHA256(SHA256(use...

替换 Spring Cloud,使用基于 Cloud Native 的服务治理

Spring Cloud 这套体系和 Kubernetes 体系还是有一些交叠的。举例来说,Spring Cloud 有 Config Server(类似的有阿里开源的 Nacos、携程开源的 Apollo),Kubernetes 则有 ConfigMap、Secret 等,它本身也有配置能力,但... 提供了自上报的机制和客户端负载均衡,是一个 AP 系统。Kubernetes 则更像传统的云厂商,可帮助用户创建机器/容器。平台自然知道应用在哪里,就可以通过 DNS 以及服务端负载均衡帮助导流。这样的体验是截然不同的。...

产品动态

表示用户请求是否命中缓存。 全量发布 配置 HTTP 响应头 2023 年 9 月产品特性 功能描述 上线范围 相关文档 升级 Referer 防盗链配置 新增"忽略 scheme 校验"配置,允许请求的 Referer 头部不包含 scheme,不影响规则... 全量发布 批量操作加速域名 新增"远程鉴权" 将 CDN 收到的请求转发至指定的鉴权服务器。CDN 根据鉴权服务器的响应结果来处理请求。 全量发布 配置远程鉴权 新增"地域访问限制" 支持指定来自哪些国家和区域请求允许...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

替换 Spring Cloud,使用基于 Cloud Native 的服务治理

Spring Cloud 这套体系和 Kubernetes 体系还是有一些交叠的。举例来说,Spring Cloud 有 **Config Server** (类似的有阿里开源的 Nacos、携程开源的 Apollo),Kubernetes 则有 **ConfigMap** 、 **Secret** 等,它... 提供了自上报的机制和客户端负载均衡,是一个 AP 系统。Kubernetes 则更像传统的云厂商,可帮助用户创建机器/容器。平台自然知道应用在哪里,就可以通过 DNS 以及服务端负载均衡帮助导流。这样的体验是截然不同的。...

干货 | UniqueMergeTree:支持实时更新删除的ClickHouse表引擎

下面以SQLServer的Column Stores为例介绍下这个方案。图中,每个RowGroup对应一个不可变的列存文件,并用Bitmap来记录每个RowGroup中被标记删除的行号,即DeleteBitmap。处理更新的时候,先查找key所属的RowGroup以及它... 将写入key从原来的part里标记删除掉,最后将新数据写入新part里。为了实现上面的逻辑,我们为每个part新增了一个key index,用于加速从唯一键值到行号的查找。另外每个part包含多个delete file,每个delete file对应一...

控制台总览

缓存配置、访问控制配置以及内容优化相关的配置。 查看和变更配置:查看与变更域名的以下任意配置: 功能 描述 基础配置 配置包括:源站、源站 Host、回源请求协议。 HTTPS 配置 配置包括:HTTPS、HTTP/2、请求使用的 TLS 版本、OCSP 装订、强制跳转(请求协议重定向)、HSTS、QUIC。 访问控制配置 配置包括:基于 Referer、Origin、UA、客户端 IP 以及客户端 IP 所在地域的访问控制、禁用指定的 HTTP 请求方法、用户请求的 URL 改写、...

干货 | 这样做,能快速构建企业级数据湖仓

LakeHouse是什么?简言之,LakeHouse是在 DataLake 基础上融合了 Data Warehouse 特性的一种数据方案,它既保留了 DataLake 分析结构化、半结构化、非结构化数据,支持多种场景的能力,同时也引入了 Data Warehouse 支持... Stateless 是指把所有有状态的数据外置,让用户的计算集群变成无状态的集群。这些有状态的组件包括:History Server、表的元数据、平台的元数据、审计日志、中间数据等。完全外置的 Stateless 集群可以达成极致的弹性...

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文

这意味着会得到 Google 巨佬在 Android 端的鼎力支持以实现超越 Java 的优秀编程体验* 通过 `KMM`(Kotlin Multiplatform Mobile)实现跨移动端的支持* `Server-side`,天然支持后端开发* 通过 `Kotlin/JS` ... .putBoolean("key", value) .apply();}```引入 KTX 扩展函数之后将变得更加简洁。```kotlinfun updatePref(sharedPreferences: SharedPreferences, value: Boolean) { sharedP...

社区征文|ChatGPT教我如何面试

###### Q:Python的GIL锁是什么?GIL锁(Global Interpreter Lock)是指在Python解释器中存在的一种机制,它限制了同一时刻只有一个线程能够执行Python字节码。因此,即使是多核处理器,Python程序在执行时也只能使用一... Cookie 和 session 都是用于在客户端服务器之间保存信息的技术。但它们之间存在一些区别,如下所示:- Cookie 是存储在客户端浏览器中的一小块数据,它可以用于跟踪客户端的状态。Session 是存储在服务器端的一...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询