如何为特定资产注册和设置http/2服务器预热?

时间:2017-11-03 作者:NextGenThemes

我一直在使用,this plugin 它说

WordPress 4.6introduced native support 获取资源提示。默认情况下,该插件遵从WordPress 4.6和主题/插件开发人员的要求,负责预取正确的资产。在旧版本的WordPress上运行的站点将继续获得以前的行为,其中所有JavaScript和样式表都为它们打印了资源提示。

我添加了一个过滤器来恢复WordPress 4.6及以上版本的旧行为(提示一切)。要使用它,请将此行添加到主题的函数中。php文件或自定义插件:

我看过代码,对我来说,它似乎非常黑客和可怕(不是它的做法,而是当时必须采取的方式)

实际上,我现在正在使用过滤器提示所有内容(可能是个坏主意)。我曾在wp core track上偶然发现一条关于这一点的帖子,但我找不到它。从介绍帖子的代码中,我真的没有学到那么多。

我想要的只是

wp_register_script( ..., $http_prefech = true );
我想在trac的某个地方也讨论过这个问题。

有这样的包装器吗?或者你能用最简单、更适合WP的方式告诉我如何设置特定的资产进行预取吗?

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

WordPress中对资源提示的支持是通过rel attribute of <link> elements 在HTML文档中,不使用HTTP/2服务器推送(使用Link HTTP响应中的标头)。您可以使用wp_resource_hints filter 要添加URL,需要进行如下预回迁:

add_filter( \'wp_resource_hints\', \'cyb_resource_hints\', 10, 2 );
function cyb_resource_hints( $urls, $relation_type ) {

  if( \'prefetch\' == $relation_type ) {

    $urls[] = \'https://exmaple.com/assets/script.js\';

  }

  return $urls;

}
如果您喜欢使用HTTP/2服务器推送,可以设置Link 带有PHP的标头。Apache上的htaccess等。

例如,使用PHP:

header("Link: </css/styles.css>; rel=preload; as=style");
通常,您可以在多个级别将其与WordPress集成template_redirect 操作,例如:

add_action( \'template_redirect\', \'cyb_push_styles\' );
funciton cyb_push_styles() {

    header("Link: </css/styles.css>; rel=preload; as=style");  

}

SO网友:Alex MacArthur

首先,预加载和预取资产之间有区别,插件对此并不是非常清楚。预取资产的优先级较低,因此最好用于将来加载页面时使用的资源。预加载资产最适合于同一页面上所需的资产。综上所述,您应该充分利用这两者。

至于专门为资产发送预回迁/预加载头,您可以使用我构建的插件。它允许您通过注册的句柄预取或预加载资产。只需保存句柄,指定是否要发送标题,然后保存设置。相对简单,并且比您提到的其他插件更加充实。

https://wordpress.org/plugins/better-resource-hints/

结束

相关推荐

切换到HTTPS后,指向网络管理员的链接断开

我正忙着在Hetzner上将所有站点移动到HTTPS(使用ZeroSSL/Letsencrypt)。取消托管托管服务器。我有一个单一的网站,但我的multisite installation 给我带来了麻烦。我的主站点(top node.com)运行时没有问题(前端和后端),但是,我无法登录network admin 安装新插件的选项等等(这有点像是一个交易破坏者)。当我登录到主站点的管理后端时,指向网络管理员的链接应该是https://top-node.com/wp-admin/network/. 但是