【问题标题】:Preload key requests in Svelte/Sapper project在 Svelte/Sapper 项目中预加载关键请求
【发布时间】:2021-07-01 10:53:25
【问题描述】:

我在使用Svelte/Sapper 构建的生产网站上运行Lighthouse 以衡量其性能。根据 Lighthouse 的说法,最大的机会似乎是预加载关键请求。

我找到了一个关于它的GitHub issue,但我不知道如何让 Svelte/Sapper 自动预加载关键资源,即 JavaScript 和 CSS 包。我不能只对它们进行硬编码,因为它们在每次构建后都有不同的哈希值。

例如,我希望将这些包含在生成的 HTML 的 head 标记中:

<link rel="preload" href="styles.css" as="style">
<link rel="preload" href="/client/chunk.3065f5a7.js" as="script">
<link rel="preload" href=/client/index.eb6a9ec4.js" as="script">

如何让 Svelte/Sapper 自动为关键资源添加 &lt;link type="preload" /&gt; 元标记?

【问题讨论】:

    标签: performance svelte lighthouse sapper


    【解决方案1】:

    如果不了解您的项目结构,这是一个很难回答的问题,但是,Sapper does have the ability to preload resources。您正在寻找类似的东西吗?

    直接取自上面的链接:

    <script context="module">
        export async function preload(page, session) {
            const { slug } = page.params;
    
            const res = await this.fetch(`blog/${slug}.json`);
            const article = await res.json();
    
            return { article };
        }
    </script>
    <script>
        export let article;
    </script>
    <h1>{article.title}</h1>
    

    编辑:2021 年 4 月 7 日 根据Sapper GitHub Issue#1576,从 2020 年 10 月开始,这似乎从 Sapper 0.28.10 开始得到解决。

    【讨论】:

    • 您好,谢谢您的回答!但是,我正在寻找一种可以自动为关键资源添加 &lt;link type="preload" /&gt; 元标记的解决方案。
    • 根据您提供的链接的 GH 问题,这应该从 0.28.10 开始工作
    • 但事实并非如此。如果我在再次查看时理解正确,如果您将应用导出为对我不起作用的静态网站,它就会起作用。
    猜你喜欢
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2020-02-20
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多