@ fastify/ caching (帮助)
@ fastify/ caching (帮助) 是一个插件 快捷化 框架 以提供服务器侧缓存和机制来根据 RFC 2616 第14.9节。 。 。 .
此插件完全支持快取封装. 因此,路线 缓存设置应不同 环境.
该插件除了提供头操作外,还装饰了 服务器实例,其对象可用于缓存项目. 说明: 默认缓存不应在“生产”环境中使用。 没错 a LRU,内存缓存,上限为10万件. 没错 高级 建议提供全功能缓存对象,例如:. 抽象缓存。 。 。 .
安装
npm i @fastify/caching
兼容性
| 插件版本 | 快速化版本 |
|---|---|
>=9.x | ^5.x |
^8.x | ^4.x |
>=6.x <8.x | ^3.x |
>=4.x <6.x | ^2.x |
>=1.x <4.x | ^1.x |
请注意,如果一个快取版本没有支持,那么该插件的相应版本也一样 上表列出. 见 快速化 LTS 政策 更多细节.
示例
此示例显示使用插件禁用客户端缓存所有 路线.
const http = require('node:http')
const fastify = require('fastify')()
const fastifyCaching = require('@fastify/caching')
fastify.register(
fastifyCaching,
{privacy: fastifyCaching.privacy.NOCACHE},
(err) => { if (err) throw err }
)
fastify.get('/', (req, reply) => {
reply.send({hello: 'world'})
})
fastify.listen({ port: 3000 }, (err) => {
if (err) throw err
http.get('http://127.0.0.1:3000/', (res) => {
console.log(res.headers['cache-control'])
})
})
此示例显示如何注册插件, 使其仅提供 一个服务器本地缓存。 它不会为响应设置任何缓存控制头 . 它还显示如何保留缓存对象的引用,以便它能够 重新使用.
const IORedis = require('ioredis')
const redis = new IORedis({host: '127.0.0.1'})
const abcache = require('abstract-cache')({
useAwait: false,
driver: {
name: 'abstract-cache-redis', // must be installed via `npm i`
options: {client: redis}
}
})
const fastify = require('fastify')()
fastify
.register(require('@fastify/redis'), {client: redis})
.register(require('@fastify/caching'), {cache: abcache})
fastify.get('/', (req, reply) => {
fastify.cache.set('hello', {hello: 'world'}, 10000, (err) => {
if (err) return reply.send(err)
reply.send({hello: 'world'})
})
})
fastify.listen({ port: 3000 }, (err) => {
if (err) throw err
})
API 密码
选项
@ fastify/ caching (帮助) 接受选项对象 :
{
privacy: 'value',
expiresIn: 300,
cache: {get, set},
cacheSegment: 'segment-name'
}
privacy(默认 :undefined: 可以设置为任何有效的字符串 (单位:千美元) 缓存响应方向 由RFC 2616定义.expiresIn(默认 :undefined: 一个值,以秒计,用于 最大年龄 页:1 资源可能被缓存。 当这个设定,和privacy未设定为no-cache, (中文(简体) ), 接下来', max-age=<value>'将附在cache-control头曰.cache(默认 :abstract-cache.memclient: 一个 抽象缓存 符合协议的缓存对象。 注意: 插件需要缓存实例 适当支持ETag机制。 因此,如果提供了病态值 默认将被使用.cacheSegment(默认 :'@fastify/caching': 当 与缓存通信.serverExpiresIn(默认 :undefined:一个值,以秒为单位,表示资源是新鲜的并可能保存在一个共享缓存(如CDN)中的时间长度. 共享缓存会在指定时忽略最大年龄, 尽管浏览器会继续使用最大年龄 。 应随过期一起使用 In,而不是取而代之. 当这个设定,和privacy设置为public,则', s-maxage=<value>'将附在cache-control头曰.
reply.etag(string, number)
此方法允许设置 etag 头曰. 它接受任意行为
绳子。 请确定为 HTTP 信头提供有效的字符串 .
如果标签字符串没有提供, 那么 安全无虞 将用来 生成标签。 这次行动将进行 同步这是 建议始终为这种方法提供价值以避免这一操作.
所有对受此插件影响的路径的请求都会被检查
页:1 if-none-match 头曰. 如果信头存在, 将使用该值
查找此插件相关缓存中的标记。 如果标签是
后,回复将以发送到
客户.
标记将根据第二个参数被缓存 。 如果第二个参数
它是一个整数,然后用作缓存的时间
生成304个响应的调试器。 时间必须在
毫秒长. 未指定参数时,默认寿命为
3600000。 。 。 .
reply.expires(date)
此方法允许设置 expires 头曰. 它接受常规的 Date
对象或字符串,根据
RFC 2616 第14.21节。 。 。 .
许可证
许可证根据 麻省理工学院。 。 。 .