我收到此消息"在主机名之间并行化下载"在GTmetrix上检查我的WordPress网站时> https://gtmetrix.com
以下是详细信息> https://gtmetrix.com/parallelize-downloads-across-hostnames.html
我该如何解决?
答案 0 :(得分:9)
<强>详情
Web浏览器限制了它们对主机的并发连接数。当需要下载许多资源时,将形成等待下载的积压资源。浏览器将允许浏览器同时连接到服务器,以便下载这些资源,但随后将排队其余并等待请求完成。
等待连接完成所花费的时间称为阻止,减少此阻塞时间可能会导致加载页面更快。下面的瀑布图显示了一个从同一主机加载45个资源的页面。请注意资源在下载之前(棕色段)在等待免费连接时下载(紫色段)的时间。
所以这是在WordPress上实现它的黑客攻击。
为了正常工作,所有子域名/主机名必须具有相同的结构/路径。例如:
添加到functions.php
function parallelize_hostnames($url, $id) {
$hostname = par_get_hostname($url);
$url = str_replace(parse_url(get_bloginfo('url'), PHP_URL_HOST), $hostname, $url);
return $url;
}
function par_get_hostname($name) {
//add your subdomains below, as many as you want.
$subdomains = array('media1.mydomain.com','media2.mydomain.com');
$host = abs(crc32(basename($name)) % count($subdomains));
$hostname = $subdomains[$host];
return $hostname;
}
add_filter('wp_get_attachment_url', 'parallelize_hostnames', 10, 2);
答案 1 :(得分:1)
这主要归功于HTTP / 1.1,其中浏览器平均每个主机名打开6个连接。
如果您使用支持HTTP / 2的提供商通过HTTPS运行,此警告现在通常可以安全地忽略。使用HTTP / 2,现在可以通过单个连接并行加载多个资源。
-
但是,如果您需要修复它,可以按照以下步骤操作:
创建其他子域名,例如: domain.com static1.domain.com static2.domain.com
只需将以下代码添加到WordPress主题的functions.php文件中即可。并将$ subdomains值替换为您的子域。
所有子域/主机名必须具有相同的结构/路径。
"Locations": {
"location1": {
"name": "Nice location",
"isLocationOf": {
'post1': true,
'post2': true
}
}
}
详细了解parallelize downloads across hostnames警告以及您可能不再需要担心的原因。