在前端开发中,缓存是一个非常重要的话题。向后端服务器发送请求会占用宝贵的带宽和时间,通过前端缓存可以减少网络传输,提高用户体验。@hapi/yar
是一个用于服务端 Node.js 的轻量级和可扩展的缓存管理库,它提供了方便的 API 同时支持多个缓存媒介 (例如内存,硬盘,Redis 等)。
本文将介绍如何使用 @hapi/yar
包来建立缓存系统。内容将涵盖如下方面:
- 安装和初始化
@hapi/yar
- 存储和访问数据
- 配置选项
安装和初始化
@hapi/yar
是通过 npm 包管理器进行安装。在控制台中输入以下命令即可安装:
npm install @hapi/yar
在你的服务端应用中,引入 @hapi/yar
模块并且初始化。快速初始化的代码样例:
-- -------------------- ---- ------- ----- ---- - ---------------- -- -------- ---- -- ----- ------ - --- ------------- ----- ---- --- ----- --- - - ----------- ------ -- ------ ------- -------------- - --------- -------------------------- -- -------------- --------- ------ -- --- ----- -------------- -- -- ----- ----------------- ------- --------------------- -------- ---- --- ----- --------------- ------------------- ------- -- ---- -----------------
存储和访问数据
获取值
@hapi/yar
有一个名为 request.yar
的对象,用于存储和获取数据。获取缓存值不需要任何异步操作,同步地通过 request.yar.get(name, [options])
完成。
-- -------------------- ---- ------- -------------- ------- ------ --------- -------- -------- --------- -- - ----- ---- - ------------------------ -- ------ - ------ ------- ---------- - ------ ------- ----------- - ---
设置值
设置缓存值可以同步或异步地进行。启用异步存储将使缓存内容更新操作变为异步操作。可以使用 Promise 或 callback 风格的函数将数据更新提交给缓存媒介。
server.route({ method: 'GET', path:'/update/{name}', handler: function (request, h) { request.yar.set('name', request.params.name); // 同步地设置缓存 return `Hello, ${request.params.name}!`; } });
另外,还有一个名为 request.yar.touch(name, [options])
的方法,可以用来延长缓存过期时间。
-- -------------------- ---- ------- -------------- ------- ------ ---------------- -------- -------- --------- -- - -- -- ------ ----- ------------------------- -- - -- - ------ -- -- -- -- ------ ------ ----------- - ---
删除值
你可以通过调用 request.yar.clear(name, [options])
来删除指定的缓存值。如果省略 name
,则将删除所有存储的缓存值。
-- -------------------- ---- ------- -------------- ------- ------ --------------- -------- -------- --------- -- - -- ---- -------------------- ------ ------- ----- - ---
配置选项
可以通过把配置传递给 await server.register()
的 options
字段来设置 @hapi/yar
。
储存空内容
默认情况下,如果一个新的客户端连接到服务器时,@hapi/yar
将自动生成一个空缓存。可以通过设置 storeBlank
选项来禁用这个行为。
const yar = { storeBlank: false, // 禁止自动创建 cookies };
Cookie 配置
Cookies 是 @hapi/yar
的默认缓存媒介之一。可以通过 cookieOptions
设置来修改配置。
const yar = { cookieOptions: { password: 'hapiyarcookieencryption', // 请勿在此处硬编码您的密码 isSecure: false, // 如果在 HTTPS 上使用,请将其设置为“真” }, };
password
: 验证 cookies 的密码。请不要直接在代码中使用实际的密码,而是使用独立的配置文件或环境变量。isSecure
: 如果在 HTTPS 上使用,请将其设置为true
,以确保 cookies 无法被第三方窃听。
缓存存储介质
除了 Cookies 之外,@hapi/yar 还支持其他存储介质,例如内存,Redis 或本地磁盘。
-- -------------------- ---- ------- ----- ------------------------- ----------------- - ------- ---- -------- - ------ ------------- ---------- - ---- -------------------------- - - - -- ----- -- - ----------------- ---
store
: 缓存媒介。可以是内存,Redis 或本地文件系统。storeOpts
: 用于链接缓存媒介的选项。
结论
@hapi/yar
提供了方便的 API 和可扩展的缓存管理框架,可以在你的项目中方便地使用。使用 @hapi/yar
,可以显著减少向前端用户发送的请求,降低服务器负载,提高响应速度和用户体验。
在使用过程中,需要注意防止缓存过期和数据被窃听或污染。同时,也可以通过适当的配置来优化缓存媒介和存储介质。
关于 @hapi/yar
的更多教程和示例,请查看 官方文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaeabb5cbfe1ea0610ea7