用minify来减少wordpress的连接请求次数

教你加两段代码就可以用minify轻松节省wordpress的连接请求次数
 

一,方向

减少WP连接请求次数当前方法主要是:一是图片合并用CSS分割,二是合并CSS同JS。

图片合并CSS分割同本文无关,再加上都唔算是D乜技术,冇乜好都讲的。

合并CSS同JS,表面上就是并所有CSS文件合成一个,所有JS合成一个。如果你念住用手一个个来搞。。。你都傻的。。。晒心机挨眼训。。。

目标是自动、可控。效果可以直接右键睇我BLOG源码。

呢次用minify来做解决方案(自动合并兼压缩),下载网址:http://code.google.com/p/minify/

二,minify基本配置

将minify压缩包里边的min目录放到wordpress的根目录

进入min目录,打开config.php,改:

$min_enableBuilder = false;

$min_cachePath = dirname(dirname(__FILE__)). '/cache/min';

解释:
dirname(dirname(__FILE__)) 是指上一级目录,就是wordpress的根目录。
/cache/min 是指缓存目录,有需要改成你自己钟意的。

三,源码

本来呢部分应该是做成插件形式的,不过个人情况唔同,我系整到主题的functions.php内的。

首先来处理CSS,以下函数自动解决head里的CSS,一般都系head加载CSS。

function bd_minify_style()
{
	global $wp_styles;
	$minifystyle = array();
	foreach ((array)$wp_styles->registered as $thisstyle)
	{
		if (stristr($thisstyle->src, '/wp-content/'))
		{
			//排除条件
			if ( stristr($thisstyle->src , '/bluedream/css/') )
			{
				continue;
			}
			array_push($minifystyle, $thisstyle->src);
			wp_deregister_style($thisstyle->handle);
		}
	}
	$minifystyle =	 apply_filters('bd_minify_style', $minifystyle);
	$alen = count($minifystyle);
	if (0 < $alen)
	{
		$blogurl = get_bloginfo('url').'/';
		echo '<link rel="stylesheet" href="'. $blogurl . 'min/?f=';
		$anow = 0;
		foreach ( $minifystyle as $src )
		{
			echo str_replace( $blogurl , '', $src);
			if ( $anow != $alen-1 )
			{
				echo ',';
				$anow++;
			}
		}
		echo '" type="text/css" media="all" />' . "\n";
	}
}
add_action('wp_print_styles', 'bd_minify_style');

再来处理JS,只处理wp_footer的部分,因为一般JS都掉到尾部先加载。要系head加载的唔建议处理。

function bd_minify_js()
{
	$minifyjs = array();
	global $wp_scripts;
	foreach ((array)$wp_scripts->registered as $thisscript)
	{
		if (stristr($thisscript->src, '/wp-content/'))
		{
			//排除条件
			//if ( stristr($thisscript->src , '/bluedream/js/') )
			//{
				//continue;
			//}
			array_push($minifyjs, $thisscript->src);
			wp_deregister_script($thisscript->handle);
		}
	}

	//额外添加
	//array_push($minifyjs, get_template_directory_uri() . '/js/bluedream_js.js');

	$minifyjs = apply_filters('bd_minify_js', $minifyjs);
	$alen = count($minifyjs);
	if (0 < $alen)
	{
		$blogurl = get_bloginfo('url').'/';
		echo '<script type="text/javascript" src="'. $blogurl . 'min/?f=';
		$anow = 0;
		foreach ( $minifyjs as $src )
		{
			echo str_replace( $blogurl , '', $src);
			if ( $anow != $alen-1 )
			{
				echo ',';
				$anow++;
			}
		}
		echo '"></script>'."\n";
	}
}
add_action('wp_footer', 'bd_minify_js', 0);

以上两段都好简单,唔觉得边度要解释,要讲的就是CSS同JS都系要用wp_enqueue_style同wp_enqueue_script来添加的。
一般负责的主题同插件的作者都会用佢来添加,不过世事无绝对,如果有边条CSS或者JS冇被自动处理,你自己查一下佢的代码,有需要果阵改下。

本文发布于 。属于 WordPress点滴 分类,被贴了 标签。

《用minify来减少wordpress的连接请求次数》有0个评分

★★★★★
★★★★
★★★
★★
0
0
0
0
0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注