【问题标题】:SvelteKit and caching the component output in server-side renderingSvelteKit 并在服务器端渲染中缓存组件输出
【发布时间】:2021-11-30 03:03:43
【问题描述】:

我有一个 SvelteKit 登录页面组件,用于计算和显示统计信息。因为从数据库中处理数字是一项繁重的工作,而且这些信息只更新大约一个小时左右,所以我想缓存结果,以便为所有访问者快速提供登录页面。在路由load()期间使用fetch()从后端加载统计信息。

我正在为页面使用 SvelteKit 服务器端渲染,并带有 Node.js 适配器。我可以让 SvelteKit 连接到 SQL、Redis 或其他东西来存储缓存结果。我相信即使是基于文件系统的缓存也适用于我的情况。

Svelte 和 SvelteKit 是否支持在我的用例中有意义的任何类型的服务器端渲染缓存选项?例如。该组件不会渲染组件,而是缓存load() 输入甚至生成的HTML。是否有在 Svelte 世界中广为人知并与 Svelte 很好集成的库或缓存解决方案?

【问题讨论】:

    标签: svelte sveltekit


    【解决方案1】:

    据我所知,不存在任何内置功能。

    这篇文章可能对理解 SSR 有所帮助:SSR 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}`)
        };
    
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2011-07-17
      • 2016-07-04
      • 1970-01-01
      • 2017-04-02
      相关资源
      最近更新 更多