SEO前端教程/Web前端技术

WordPress建站教程(4):WP网站速度优化及缓存

狩酷 · 3月14日 · 2020年 · 982次已读

前言

因为Wordpress程序注重扩展性与兼容性,执行过程中包含大量的钩子、判断、文件加载等操作,会导致系统资源占用高,执行速度缓慢的情况。

在访问量少的时候感觉不明细,一旦访问量较多的时候,Wordpress对CPU与内存的占用率是相当高的,所以Wordpress的优化工作是必不可少的。

PHP Opcache

Opcache的全称是: Opcode cache,其前生是Optimizer+,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。

在PHP 7中, Opcache 是默认安装的,无需另外安装,但需要手动开启。在PHP.ini文件中找到[opcache],参照以下内容进行开启。

[opcache]
;开启opcache
opcache.enable=1  

;CLI环境下,PHP启用OPcache
opcache.enable_cli=1

;OPcache共享内存存储大小,单位MB
opcache.memory_consumption=128 

开启成功后,在PHPinfo中能看到以下内容:

phpOPCACHE

WordPress缓存插件

WordPress的缓存插件,在WP后台插件商店中有很多款,比如 WP Super Cache 、WP Fastest Cache、 W3 Total Cache 等等。

这里以WP Super Cache插件举例, 相对于 W3 Total Cache ,WP Super Cache的配置更简单。在Wordpress后台插件 — 安装插件,输入WP Super Cache关键词进行查找,即可安装插件。

安装并启用插件后,在后台的设置菜单中会出现WP Super Cache选项,进入配置页面,参照下图进行设置。

WP super cache

开启专家模式后,如果是 Apache 环境, WP Super Cache 会自动修改 .htaccess文件,或者根据提示修改 .htaccess文件内容。如果是 Nginx 环境,需要用以下内容替换Wordpress的伪静态规则。

rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~ .*\.(oft|eot|svg|ttf|woff|woff2)$
{
  add_header Access-Control-Allow-Origin *; # 解决字体跨站问题
  add_header Access-Control-Allow-Headers X-Requested-With;
  add_header Access-Control-Allow-Methods GET,OPTIONS;
  expires max;
  error_log off;
  access_log /dev/null;
}
# WP Super Cache rules.
# Designed to be included from a 'wordpress-ms-...' configuration file.
 
set $cache_uri $request_uri;
 
#POST请求和带有查询字符串的网址应始终转到PHP
if ($request_method = POST) {
        set $cache_uri 'null cache';
}
 
if ($query_string != "") {
        set $cache_uri 'null cache';
}   
 
#不要缓存包含以下段的uri
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
        set $cache_uri 'null cache';
}   
 
#不要将缓存用于登录的用户或最近的评论者
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
        set $cache_uri 'null cache';
}
 
# 移动设备支持
# 移动浏览器部分可将其存储为非缓存版本。 默认情况下,由于包括21个在内的大多数现代wordpress主题都具有响应性,因此被评论。 如果要使用WP-Touch之类的插件,请在本节中取消注释配置行
# if ($http_x_wap_profile) {
#        set $cache_uri 'null cache';
#}
 
#if ($http_profile) {
#        set $cache_uri 'null cache';
#}
 
#if ($http_user_agent ~* (2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800)) {
 #       set $cache_uri 'null cache';
#}
 
#if ($http_user_agent ~* (w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-)) {
  #      set $cache_uri 'null cache';
#}
#END 移动设备支持
 
# 使用缓存或实际文件(如果存在),否则将请求传递给WordPress
location / {
        try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-https.html $uri $uri/ /index.php?$args ;}

如果网站没有开启https访问,最后的部分用以下代码替换:

location / {
        try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php?$args ;}

如果开启了移动设备支持(非响应式主题建议开启,PC端和移动端将缓存不同的内容),需要在以上 Nginx 配置中将相应行的#去掉。

WP Super Cache 缓存预加载配置:

WP super cache插件配置

CSS、JS优化插件

Autoptimize插件的作用是通过优化CSS,JS,图像,Google字体等来使您的网站更快。

CSS优化插件

这个部分是优化js代码的,其中Aggregate JS-files选项勾选的话,有可能会造成部分主题或插件的兼容性问题,如果出错,可以去掉勾选,或者在排除脚本中排除相应的js代码。

CSS优化插件

CSS优化的部分如上图选择即可。

Memcached 对象缓存

首先需要安装Memcached服务与PHP的Memcached扩展,具体参考《Memcached安装使用教程(Linux/Windows服务器)》

0 条回应