最近公司的一个网上商店的项目,用的底层是wordpress+woocommerce,里面很多自定义的额外功能是由我开发的,最后部署的时候计划整合CDN,把静态内容都分流给边缘服务器,wordpress只处理数据逻辑,也就是只运行php程序。

这涉及到如何把默认的静态资源url替换成CDN的url,在网上翻了一遍,原来已经有大牛写出了靠谱的插件了,这个大牛的博客地址

https://dannyvankooten.com/using-a-cdn-with-wordpress/

人家在github上已经开源了自己的项目

https://github.com/dannyvankooten/wp-cdn-loader

直接下载插件到wp-content/plugins,解压,在管理页面激活就能使用

https://github.com/dannyvankooten/wp-cdn-loader/archive/master.zip

首先要在wp-config.php里面添加这么一行,可以作为是否开启CDN的开关之一,另外一个开关就是在后台

关闭这个插件的功能咯~

define( 'DVK_CDN_URL', 'http://xxxxxx.cloudfront.net' );
//The plugin won't replace assets when SCRIPT_DEBUG is enabled.

配置好之后,刷新页面,就能看到所有css,js,jpg,png的url的前面都被替换成了设置的值(

http://xxxxxx.cloudfront.net

)了,说明配置成功!

好奇心所向,研究了人家写的代码,一共2个文件,主文件

add_hooks();
});

class库文件

site_url = $site_url;
        $this->cdn_url = $cdn_url;
    }

    public function add_hooks() {

        // add nothing if cdn url is empty
        if( '' === $this->cdn_url ) {
            return false;
        }

        // add rewrite filters for plugin & theme assets
        add_filter( 'theme_root_uri', array( $this, 'rewrite' ), 99, 1 );
        add_filter( 'plugins_url', array( $this, 'rewrite' ), 99, 1 );

        // add rewrite filters for misc scripts and styles
        add_filter( 'script_loader_src', array( $this, 'rewrite' ), 99, 1 );
        add_filter( 'style_loader_src', array( $this, 'rewrite' ), 99, 1 );
        return true;
    }

    /**
     * @param $url
     *
     * @return mixed
     */
    public function rewrite( $url ) {
        $url = str_replace( $this->site_url, $this->cdn_url, $url );
        return $url;
    }
}

今天先写到这里,公司要上班了, 有空再补充说明。