我們知道,在下載網(wǎng)站文件時,瀏覽器對同一個域名的文件是有一個并發(fā)請求限制的。具體限制的請求個數(shù),各個瀏覽器不盡相同,大概的限制可以參考下圖:

那么加速網(wǎng)站文件下載的一個方法就是增加并發(fā)請求,我們不可能改變?yōu)g覽器的限制,但是我們可以讓網(wǎng)站的資源通過幾個域名同時下載,比如我們可以把網(wǎng)站的靜態(tài)資源分布到 3 個 CDN 域名上,拿谷歌瀏覽器來說,就可以同時下載 3 x 6 = 18 個文件。對于圖片等靜態(tài)資源比較多的網(wǎng)站來說,可以較好的提高網(wǎng)站頁面的打開速度。
本站之前介紹過一個名為 WP CDN Rewrite 的 CDN 插件,可以很方便的替換網(wǎng)站的靜態(tài)資源為 CDN URL,遺憾的是,那個插件并不支持多個 CDN 域名。今天為大家推薦一個可以支持多 CDN 域名的 WordPress CDN 插件——Dynamic CDN。該插件允許我們?yōu)榫W(wǎng)站靜態(tài)資源設(shè)置任意多個 CDN 地址,把網(wǎng)站的靜態(tài)資源平均分配到這些 CDN 地址上。
稍有不便的是,該插件并未在 WordPress 官方插件倉庫上架,Dynamic CDN 的官方倉庫為:https://github.com/ericmann/dynamic-cdn,需要我們自己下載安裝。
Dynamic CDN 使用方法
安裝方法自不必多說了,只需要下載、上傳、啟用即可,安裝后,我們需要進行一些設(shè)置,才能讓插件為我們服務(wù)。為了保持精簡和專注,插件沒有提供后臺設(shè)置,我們可以通過下面兩種方法開啟并設(shè)置 CDN。其中 *.mydomain.com 就是 CDN 域名,使用的時候替換為我們自己的 CDN 域名就可以了。
通過動作鉤子設(shè)置 CDN 域名
把下面代碼寫入 functions.php 中即可
add_action('dynamic_cdn_first_loaded', function ()
{
$manager = EAMann\Dynamic_CDN\DomainManager::last();
$manager->add('cdn0.mydomain.com');
$manager->add('cdn1.mydomain.com');
$manager->add('cdn2.mydomain.com');
});
通過常量設(shè)置 CDN 域名
把下面代碼寫入 wp-config.php 中即可。
define( 'DYNCDN_DOMAINS', 'cdn0.mydomain.com,cdn1.mydomain.com,cdn2.mydomain.com' );
設(shè)置多域名 CDN 后的網(wǎng)站資源下載情況對比
設(shè)置 CDN 前,網(wǎng)站資源下載的網(wǎng)絡(luò)請求瀑布圖如下:

設(shè)置了 CDN 后,我們再查看網(wǎng)絡(luò)請求瀑布圖,會發(fā)現(xiàn),有更多的資源一起下載了。這么多資源齊刷刷的左對齊,強迫癥看起來應該會很舒服。

讓 Dynamic CDN 支持更多類型的文件
Dynamic CDN 默認不支持 CSS 文件,我們可以通過插件提供的一個過濾鉤子讓該插件支持更多類型的文件,或者取消支持某種類型的文件。
add_filter('dynamic_cdn_extensions', function ($types)
{
$types[] = 'css';
$types[] = 'ttf';
$types[] = 'woff';
$types[] = 'woff2';
$types[] = 'zip';
$types[] = 'rar';
$types[] = 'ppt';
$types[] = 'pptx';
$types[] = 'doc';
$types[] = 'docx';
$types[] = 'xls';
$types[] = 'xlsx';
unset($types[ 'js' ]);
return $types;
});
如果您的網(wǎng)站本來就是以文字為主,一個頁面的 HTTP 請求數(shù)總共也沒多少,設(shè)置多域名 CDN 也可能會帶來反面效果,畢竟瀏覽器解析 CDN 域名也需要一定的時間。如果您的網(wǎng)站靜態(tài)資源比較多,可以試試?Dynamic CDN 插件,相信會為您的網(wǎng)站帶來不小的速度提升,除了設(shè)置多域名 CDN,我們還可以通過懶加載、啟用 HTTP2 等措施加快網(wǎng)站的打開速度,當然這是另外的話題了,在這里就先不多說。


