值此良机,记录一下解决万恶的 Google 提供的反动公共库文件拖慢整站的问题。如果你的 WordPress 上只跑着一个站点,插件 Useso take over Google 已经提供了完美的解决方案。但是,如果想要在 WordPress 多站点中,把库文件放在每个站点的目录下呢?

Nginx 反代

公共库文件不是随时更新的内容,所以很适合用缓存进一步提速。注意,缓存功能需要 nginx cache_purge 模块。

设定缓存文件

编辑 nginx.conf,增加:

proxy_cache_path  /tmp/nginx-cache-googleapis  levels=1:2   keys_zone=cache_googleapis:10m max_size=10g;

指定 ajax 目录反代

创建 conf.d/proxy-ajax-googleapis.conf,内容如下:

location ^~ /ajax/ {
	proxy_cache_key "$request_uri";
	proxy_cache cache_googleapis;
	proxy_cache_valid  200 304 3h;
	proxy_cache_valid 301 3d;
	proxy_cache_valid any 10s;
	proxy_pass_header Server;
	proxy_set_header User-Agent $http_user_agent;
	proxy_set_header Host ajax.googleapis.com;
	proxy_redirect off;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Scheme $scheme;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_pass http://ajax.googleapis.com;
}

对站点启用

修改 WordPress 站点的 nginx 配置文件,增加:

include conf.d/proxy-ajax-googleapis.conf;

加载反代配置

在终端中执行:

service nginx reload

访问一下 https://dallaslu.com/ajax/libs/jquery/1.11.1/jquery.min.js,速度还不错。

WordPress 引用地址

替换脚本引用地址

把插件 Useso take over Google 下载下来,修改 php 文件中的 function useso_take_over_google_str_handler 为:

function useso_take_over_google_str_handler($matches)
{
	$str = $matches[0];
 
	$str = str_ireplace('//ajax.googleapis.com', home_url(), $str);
 
	return $str;
}

使插件生效

将插件的文件夹名字改为 do-not-use-google-libraries,上传到 wp-content/plugins,进入管理网络的插件菜单下,选择在全部站点中启用。

你猜怎么着?好使了呗!