几个提高WORDPRESS速度的技巧
文章目录
[隐藏]
- 0x00 主题资源
- 0x01 Nginx
- 0x02 PHP
- 0x003 WordPress后端缓存
虽然有很多介绍WordPress缓存插件的,我也介绍过用Redis来缓存WordPress生成的页面,这也不失为一个较便捷的优化方法。但是很多时候我们会使用动态的元素,比如手机端和桌面端分发不同的图片,如果直接使用前端缓存插件会导致这些元素失去原有的效果。
Apache因为可以把PHP作为自己的一个模块,所以在大并发的时候理论上效率要比Nginx之类的使用FastCGI方式的效率高一点,而且不容易出现502错误。不过我个人觉得这种差异非常小,而且PHP+Nginx也是非常常见的搭配方式,所以这里不讨论。
0x00 主题资源
很多人使用了外国主题,里面调用了许多国内无法访问或者访问很慢的资源,比如Google fonts,或者直接引用的外国CDN上的js文件,都可能导致网站加载速度过慢。在Chrome中按F12打开Developer Tools,选择其中的Network面板就可以看到加载过慢的元素,你可以下载这些文件到自己的服务器中,然后通过跨文件搜索工具搜索引用这些元素的文件并将他们的URL修改为自己网站的链接。
0x01 Nginx
如果你使用了HTTPS,那请直接开启HTTP2,极大的提高网页加载速度
listen 443 ssl http2 fastopen=3 reuseport;
fastopen是Linux内核的特性,客户端和服务端均为Linux内核时才有作用,可加快TCP握手速度。reuseport为Nginx 1.9.1的新特性套接字端口共享,详情可参考Socket Sharding in NGINX Release 1.9.1。
使用keepalive并设定一个过期时间,单位为秒,在时间内浏览器和服务器会保持连接,有新的请求响应会更迅速。
keepalive_timeout 70;
对于https,可以设置ssl会话过期时间
ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d;
对于一些静态化的资源,比如js与css文件,可以通过设置缓存过期时间,告诉浏览器在规定时间内不需要再次请求这些资源以加快访问速度(d为天,h为小时)
location ~.*.(js|css)?$ { expires 1d; }
大多数Nginx配置中都已经启用Gzip来压缩网页内容,你也可以使用谷歌开发的Brotli来提高压缩率,需要在Nginx编译时引入
#下载Brotli的Nginx模块 git clone https://github.com/google/ngx_brotli.git cd ngx_brotli git submodule update --init #在Nginx编译时设定参数 ./configure --add-module=../ngx_brotli #在Nginx的主配置http块中开启Brotli brotli on; brotli_comp_level 6; brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
0x02 PHP
PHP对WordPress性能的影响非常大,建议使用7.0以及更新的版本,我目前在使用PHP7.1。PHP的几个大版本性能差异可以看PHP核心开发者鸟哥的评测,大致上7.x版本会比5.x版本提高一倍左右的性能。
PHP另外一个需要注意的点是要开启OPcache,OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
PHP 5.5.0及以后的版本只要未在编译时禁用默认扩展,OPcache均已附带在PHP中,只需要在PHP配置文件PHP.ini中使用zend_extension=opcache.so即可加载(Windows使用zend_extension=php_opcache.dll加载)
推荐配置(官方配置说明)
opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.max_wasted_percentage=5 opcache.validate_timestamps=60 (你对代码的改动将会在此秒数后生效) opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.file_cache=/tmp (让Opcache把opcode缓存缓存到外部文件中)
同时可以为OPcache启用大页内存,使用命令sudo sysctl vm.nr_hugepages=512分配,PHP.ini中加入
opcache.huge_code_pages=1
对于使用IIS的用户,可以使用WinCache扩展,下载后将其释放到PHP目录下的ext文件夹中,在PHP.ini中加载
extension=php_wincache.dll wincache.fcenabled=1 wincache.ocenabled=1
0x003 WordPress后端缓存
WordPress的后端缓存有例如使用Memcached和Redis的,不过无一例外,都需要使用TCP进行通讯,而使用PHP的扩展APCu进行后端缓存则可以绕过这一瓶颈。
首先安装APCu,如果你和我一样直接使用包管理器安装PHP,那么使用同样的方式安装即可。如果你使用的一键包或者自己手动编译安装,则需要自己手动编译,你可以在这里找到最新的模块
wget https://pecl.php.net/get/apcu-5.1.8.tgz tar zxf apcu-5.1.8.tgz phpize ./configure --with-php-config=/usr/local/php/bin/php-config make sudo make install
在PHP.ini中添加
extension=apcu.so apc.enabled=1 apc.enable_cli=1
在WordPress中安装WP LCache插件并启用,在WordPress网站目录下的wp-content中新建一个文件object-cache.php,在其中填入
<?php $lcache_path = dirname( realpath( __FILE__ ) ) . '/plugins/wp-lcache/object-cache.php'; require_once( $lcache_path );
保存即可生效,之后会发现WP后台的响应速度有可见变化。
原文出处:isthnew -> https://www.isthnew.com/some-tips-about-optimizing-wordpress/