开启CDN后,有没有办法确保从CDN加载本地字体?

时间:2021-06-10 作者:omega33

我已经用一种本地字体建立了一个WordPress网站。它存储在fonts 子主题中的文件夹。它在子主题中加载了以下内容style.css

@font-face {
    font-family: \'Last Paradise\';
    src: url(\'fonts/LastParadise.eot\');
    src: url(\'fonts/LastParadise.eot?#iefix\') format(\'embedded-opentype\'),
        url(\'fonts/LastParadise.woff2\') format(\'woff2\'),
        url(\'fonts/LastParadise.woff\') format(\'woff\'),
        url(\'fonts/LastParadise.ttf\') format(\'truetype\'),
        url(\'fonts/LastParadise.svg#LastParadise\') format(\'svg\');
    font-weight: normal;
    font-style: normal;
}
该站点有一个CDN,该CDN当前由bunny.net CDN插件。虽然我尝试了其他各种选择,例如CDN Enabler 来自KeyCDN的插件,也可以通过我测试过的各种缓存插件中的CDN选项。

在所有情况下,上述字体都不会从CDN加载。它是从网站URI调用的。

我注意到插件加载了一些其他字体,这些字体也是从站点URI而不是CDN URI加载的。

问题:是否有特定的方法导入/排队/引用本地字体,以便其URI将由CDN插件拾取,从而在启用CDN时转换为使用CDN URI?(我意识到我可以在上面的@font-face CSS,但我想知道是否有方法在本地引用字体,这样当启用CDN时,其URI将转换为CDN URI。

有没有办法覆盖插件加载的字体(如取消排队,然后重新排队)?这样我就可以强制从CDN URI加载它(在重新引用它时使用完整的基于CDN的URI?)

1 个回复
SO网友:omega33

我将在这里发布我的发现,因为它们可能对其他面临类似情况的人有用。

我曾考虑过问题是否与站点上实现的CDN重定向(插件)有关。但事实上,我尝试的每一个(3个最流行的)CDN插件,以及每一个具有CDN设置的缓存插件(3个广泛使用的缓存插件),都有相同的结果,这向我表明,这并不是问题的根源。

在更广泛地研究了这种情况后,我发现这个问题是由Aggregate CSS-files 大众的特点Autoptimize 插件。

我发现自动优化提供了一种解决这一问题的方法。这在FAQ here.

对我来说,这一发现提出了一个重要的观点,值得注意任何其他人如果发现自己的CDN实现基本正常,但某些字体(或其他资产)没有通过他们选择的CDN重定向方法加载(例如任何流行的支持CDN的插件),应该首先考虑the issue is likely caused by a conflict with another plug-in。如果您使用的是比较流行的自动优化插件,或者任何其他聚合CSS文件的优化插件,那么这应该是首先要解决的问题之一。

直接回答这两个问题:

所有流行的CDN重定向插件在重定向通过加载的字体的URI时应该没有问题@font-face { ... } 在CSS中,来自主题资产和插件资产。如果他们似乎有这样的问题,很可能是另一个插件出了问题(如上所述)dequeue 然后(re)enqueue 等效于@font-face 声明。您必须将有问题的整个CSS文件出列,并将其修改版本(使用硬编码的CDN URI)放入队列。没有用,也不可取

如果需要(在本例中不是这样,现在很明显,另一个插件是问题的原因)覆盖@font-face声明@font-face { ... } 在任何插件等的CSS文件中声明,您可以通过声明相同的@font-face { ... } 你自己然后,您可以在字体文件源中硬编码到所需的内容。我通过声明@font-face { ... } 通过受欢迎的Code Snippets 插件。这样做可以有效地更改相关字体的源位置。一种情况是,如果您想在本地为插件从远程源中引入的字体提供源代码,那么这种方法可能会派上用场。

相关推荐

将引导CDN后要加载子CS排入队列

我是Wordpress主题开发的新手,决定尝试从头创建一个主题。安装在localhost上,我已将代码添加到我的函数中。加载引导程序的php文件。min.css,然后添加了我自己的css调用,用于设置非引导元素的样式。我遇到的一个问题是,引导CSS似乎优先于自定义CSS文件,例如,页面顶部有一个32px的边距。我的职能。php如下:<?php //Load CSS Files function enqueue_theme_styles() { wp_enqueue_st