【问题标题】:How to preload content with rel="preload" and Angular's hashed filenames?如何使用 rel="preload" 和 Angular 的散列文件名预加载内容?
【发布时间】:2019-09-30 10:35:15
【问题描述】:

目前,一个移动性能工具报告我的网站得分非常低,因为在网站几乎完全初始化后,一些字体文件加载得很晚。这个工具建议我使用rel="preload" 链接来预加载这些字体文件。问题是在生产环境中 Angular 的文件名包含一个内容哈希,所以my-font.woff 变成了my-font.<some-hash>.woff

有没有办法绕过这个并预加载my-font.<some-hash>.woff,而不禁用文件散列,因为文件散列在检测陈旧的缓存文件时提供了一些优势。

【问题讨论】:

    标签: html angular preload


    【解决方案1】:

    根据您的要求,您应该选择preload-webpack-plugin

    按照文档了解有关其工作的更多信息。

    在你的场景中,可以这样使用——

    plugins: [
      new HtmlWebpackPlugin(),
      new PreloadWebpackPlugin({
        rel: 'preload',
        as(entry) {         
          if (/\.woff$/.test(entry)) return 'font';         
        }
      })
    ]
    

    您必须将此插件和此代码分别添加到应用程序和 Webpack 配置中。希望这会有所帮助!

    【讨论】:

    • 有没有办法在 Angular 中做到这一点而不弹出 webpack?
    • 您可以通过静态添加 rel="preload" 到字体标签来做到这一点,但是您必须删除散列。动态 webpack 是唯一的解决方案。
    • 好的,弹出 webpack 有什么明显的缺点吗?
    • 不,没有任何缺点。它只是涉及一些额外的步骤。
    • 这真的很有帮助,谢谢。我不知道如何让更流行的插件“webpack-font-preload-plugin”处理哈希。
    猜你喜欢
    • 2018-10-11
    • 2018-09-15
    • 2019-01-23
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多