SvelteKit 并在服务器端渲染中缓存组件输出
Posted
技术标签:
【中文标题】SvelteKit 并在服务器端渲染中缓存组件输出【英文标题】:SvelteKit and caching the component output in server-side rendering 【发布时间】:2021-11-30 03:03:43 【问题描述】:我有一个 SvelteKit 登录页面组件,用于计算和显示统计信息。因为从数据库中处理数字是一项繁重的工作,而且这些信息只更新大约一个小时左右,所以我想缓存结果,以便为所有访问者快速提供登录页面。在路由load()
期间使用fetch()
从后端加载统计信息。
我正在为页面使用 SvelteKit 服务器端渲染,并带有 Node.js 适配器。我可以让 SvelteKit 连接到 SQL、Redis 或其他东西来存储缓存结果。我相信即使是基于文件系统的缓存也适用于我的情况。
Svelte 和 SvelteKit 是否支持在我的用例中有意义的任何类型的服务器端渲染缓存选项?例如。该组件不会渲染组件,而是缓存load()
输入甚至生成的html。是否有在 Svelte 世界中广为人知并与 Svelte 很好集成的库或缓存解决方案?
【问题讨论】:
【参考方案1】:据我所知,不存在任何内置功能。
这篇文章可能对理解 s-s-r 有所帮助:s-s-r explained in SvelteKit
这里还有一个您可以使用的模板。一个简单的缓存是https://www.npmjs.com/package/timed-cache
export async function load( page, fetch, session, stuff )
if (isDataInCache && isDataNotExpired)
return
props:
data: getDataFromCache()
;
else
const url = `/your-url`;
const res = await fetch(url);
if (res.ok)
const data = await res.json();
writeDataToCache(data);
return
props:
data
;
return
status: res.status,
error: new Error(`Could not load $url`)
;
【讨论】:
以上是关于SvelteKit 并在服务器端渲染中缓存组件输出的主要内容,如果未能解决你的问题,请参考以下文章