Svelte 什么会导致Sapper执行缓慢?

Svelte 什么会导致Sapper执行缓慢?,svelte,sapper,Svelte,Sapper,出于性能原因,我正在将Next.js站点移植到Sapper,但我的Sapper性能非常差。加载时间长(如果不是从缓存提供,则一个页面的加载时间约为15秒)。我的API速度非常快,所以它不会成为问题。 我使用Vercel主机。但无论是在那里还是在我的机器上,渲染时间都大约为15秒。 因为我是Sapper的新手,我怀疑我可能做错了什么。 有一件事我感到不舒服,那就是我在名为“session”的函数中从server.js传递全局站点设置(菜单结构等)。但是,这与包含用户特定数据的会话对象不同。这是我发

出于性能原因,我正在将Next.js站点移植到Sapper,但我的Sapper性能非常差。加载时间长(如果不是从缓存提供,则一个页面的加载时间约为15秒)。我的API速度非常快,所以它不会成为问题。
我使用Vercel主机。但无论是在那里还是在我的机器上,渲染时间都大约为15秒。
因为我是Sapper的新手,我怀疑我可能做错了什么。 有一件事我感到不舒服,那就是我在名为“session”的函数中从server.js传递全局站点设置(菜单结构等)。但是,这与包含用户特定数据的会话对象不同。这是我发现的在Sapper实现全球存储的唯一方法(可通过_layout.svelte和route页面访问)-如果这是肮脏的,我希望有人能告诉我另一种方法。
我关心的另一件事是,我订阅了许多不同组件中的会话,以便他们能够访问全局存储

下面是我当前的设置,总结

我在server.js中获取站点全局文件,并将它们传递到会话中。这是我能找到的唯一方法,使我能够从_layout.svelte和我的路线([…slug])svelte访问全球商店。我还为Vercel的缓存添加了stale while revalidate标题

const server = polka()
    .use(
        compression({ threshold: 0 }),

        (req, res, next) => {
            res.setHeader(
                "Cache-Control",
                "s-maxage=1, stale-while-revalidate"
            );
            next();
        },
        sirv("static", { dev }),
        sapper.middleware({
            session: async ({ headers }) => {
                const request = await fetch(
                    `https://MY_BACKEND/globals`
                );
                const { app } = await request.json();
                return {
                    app,
                    origin: `https://${headers.host}`
                };
            }
        })
    );
\u布局。苗条

<script>
  import { stores } from "@sapper/app";
  const { session } = stores();
  let mainMenu = [];
  session.subscribe(({app}) => {
    mainMenu = app.mainMenu;    
  });
</script>
<script context="module">
    export async function preload({ params },{ app }) {
        const page = await this.fetch(`${params.slug.join('/')}.json`).then(r=>r.json());

        ...some processing which uses the 'app' globals, and the page...

        return {...}
    }
</script>

从“@sapper/app”导入{stores}”;
const{session}=stores();
让mainMenu=[];
session.subscribe(({app})=>{
mainMenu=app.main菜单;
});
[…鼻涕虫].苗条

<script>
  import { stores } from "@sapper/app";
  const { session } = stores();
  let mainMenu = [];
  session.subscribe(({app}) => {
    mainMenu = app.mainMenu;    
  });
</script>
<script context="module">
    export async function preload({ params },{ app }) {
        const page = await this.fetch(`${params.slug.join('/')}.json`).then(r=>r.json());

        ...some processing which uses the 'app' globals, and the page...

        return {...}
    }
</script>

导出异步函数预加载({params},{app}){
const page=wait this.fetch(`${params.slug.join('/')}.json`)。然后(r=>r.json());
…一些使用“应用程序”全局变量和页面的处理。。。
返回{…}
}
需要访问全局存储的内部组件(可能很多)


从“@sapper/app”导入{stores}”;
让某物='';
const{session}=stores();
session.subscribe(({app})=>{
某物
});