Loading... 当你成功部署好属于自己的WordPress,使用了一个好看的主题后,就需要考虑如何优化他了,本文会从两个方面,分别是安全和性能,来讲解。 ## 性能优化 我们先来看到性能方面,因为一个好的博客,是有可能会有很多访客同时进行访问的,这个时候,你的服务器的压力会变大,因为它的性能不足以同时处理这么多进程,相比于提升服务器配置带来的高昂费用,在其他方面进行优化是更好的选择。 ### Opcache 我们知道,WordPress是用php语言编写的,php是一种解释型语言,每一次执行都要经过解释器翻译成字节码,而我们的代码一般在写好后是不会进行修改的,所以opcache的原理就是将解释后的程序缓存到内存中,下次直接从内存中读取,这样速度就会快很多了。 这里给一个对比,主要看耗时和内存占用,可以看到效果是非常明显的  未启用opcache  启用opcache 开启的方法也很简单,这里以宝塔面板为例,首先来到软件商店->对应的php版本,然后点击打开 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-010125.png) 之后点击opcache后面的安装,等待安装完成后重启php服务即可 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-010156.png) ### Redis redis是NoSQL,在这里我们用它来作为mysql的辅助,因为每一个用户访问都涉及到大量的sql操作,使用redis后,将一些操作缓存到内存中,大大减少sql查询速度慢的问题,安装方式也很简单,我们同样打开宝塔面板,来到软件商店->php->安装扩展,找到redis安装,安装后和上面一样重启php服务 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-010725.png) 之后我们来到WordPress的后台,找到插件->安装插件->搜索redis,安装如下插件 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-011000.png) 之后不需要额外操作,来到插件设置界面,点击启动后显示如下界面说明redis正常工作 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-011037.png) ### CDN 我们的服务器带宽是有限的,如果文件都放在本地服务器,由于带宽的限制,你做的所有努力都是徒劳,应为网络的出口只有那么大,这个时候CDN的作用就体现了出来,使用了CDN之后,你的网站实际上储存在了多个地方,用户访问你的网站时,就不需要从你的服务器上获取资源,而是可以从CDN服务器上获取,这样就大大减少了本地服务器的网络带宽,CDN服务商有很多,一般的云服务器厂商也会提供CDN服务,这里我以腾讯云为例。 [腾讯云CDN](https://cloud.tencent.com/act/cps/redirect?redirect=3733&cps%5C_key=2140829e94b817b8212e449453130ad2&from=console) 登陆后,新用户会送一个六个月的流量包,到期后也可以自行购买,我们点击域名管理->添加域名 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-011829.png) [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-011846.png) 加速域名填写你网站的域名,加速类型选择CDN网络小文件,打开IPv6访问,源站配置选择自有源,回源协议选择HTTPS,源站地址填写服务器公网IP地址,回源HOST也填写域名,之后点击确认添加。 添加成功后,选择缓存配置才是关键,来到域名管理,点击刚刚添加的域名,选择缓存配置,参照如下的缓存配置添加 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-012423.png) 需要注意的是,如果你在开启cdn后发现,在文章的评论中,会出现填写过的用户名,这是因为cdn将填写过的页面错误的缓存了,出现这种情况的一种原因是使用了wordpress原生的评论功能,一般在启用主题后评论功能由js引入,所以不会发生这样的问题,如果出现了评论错误缓存的情况,请将.html后缀的文件设置为不缓存。 之后来到https设置界面,参照如下配置 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-012748.png) [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-012825.png) 也可以更具自己的需要开启防盗链或者IP访问频次限制,如果要开启的话,建议将访问频次限制设置为大于40QPS [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-013011.png) ### 独立数据库 [腾讯云数据库](https://cloud.tencent.com/act/cps/redirect?redirect=1080&cps%5C_key=2140829e94b817b8212e449453130ad2&from=console) 数据库都位于wordpress的本地服务器上,如果你想要更佳的性能,可以单独购买数据库服务,让wordpress服务器只用处理php,而不用花费额外的资源去处理sql语句,如果你需要独立的数据库服务,建议在你的云主机提供商处购买,因为为了防止网络延迟带来的性能下降,所以将服务器和数据库放在一个内网中是最佳的选择,这里可以看到我的服务器连接到数据库的延迟,几乎可以忽略 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-170700.png) 不同厂商数据库的配置流程不同,在备份好本地数据库后,将本地数据库导入到云数据库,之后修改位于网站根目录下的wp-config.php文件,将云数据库的用户名,数据库名,密码,以及地址填入即可 [](https://yooss.cn/usr/uploads/img/2023/03/屏幕截图-2023-03-18-170801.png) 同样,对于上文提到的redis,也可以使用独立数据库,在wp-config.php中添加如下代码即可 ```nginx /** Redis连接的IP与端口 */ define( 'WP_REDIS_HOST', '127.0.0.1' ); define( 'WP_REDIS_PORT', 6379 ); /** Redis连接密码,如果Redis设置了密码,请将前面的“//”删除,并用密码替换secret */ // define( 'WP_REDIS_PASSWORD', 'secret' ); /** 失败前尝试初始连接到Redis服务器的时间(单位为秒) */ define( 'WP_REDIS_TIMEOUT', 5 ); /** 失败前尝试从Redis服务器读取的时间 */ define( 'WP_REDIS_READ_TIMEOUT', 5 ); // 更改每个站点的数据库以避免缓存冲突 */ define( 'WP_REDIS_DATABASE', 0 ); // 支持的客户端: `phpredis`, `credis`, `predis` and `hhvm` // define( 'WP_REDIS_CLIENT', 'phpredis' ); // 7天后自动删除缓存密钥 // define( 'WP_REDIS_MAXTTL', 60 * 60 * 24 * 7 ); // 绕过对象缓存,这对调试很有用 // define( 'WP_REDIS_DISABLED', true ); // 设置所有缓存键的前缀,如果在同一服务器中有多个WordPress站点,可以设置不同前缀避免冲突 // define( 'WP_REDIS_PREFIX, 'WP' ); ``` ### 安全 wordpress的安全问题也非常值得重视,wordpress本身并没有非常严重的漏洞,但是安装的插件可能会导致站点的安全性下降,而wordpress本身也有一些不合理的地方,我们登录后台的用户名应该是被隐藏的,但其他人可以构造如下url来得到你的用户名,你也可以用自己的站点测试一下 ```auto https://你的域名/wp-json/wp/v2/users/ ``` 或者是这个 ```auto https://你的域名//wp-includes/wlwmanifest.xml ``` 如果你的云主机提供了类似url访问限制的功能,请将这两个地址加入黑名单,如果没有类似功能,也可以通过伪静态来保护,在nginx伪静态中添加如下代码 ```nginx location ~ ^/wp-json/wp/v2/users { deny all; } location ~ ^/wp-includes/wlwmanifest.xml { deny all; } ``` © 允许规范转载 打赏 赞赏作者 微信 赞