WordPress 作为一个动态网站,不优化的话速度很慢,所以速度慢的影响这里就不细说了。这里简单介绍一下 WordPress 的速度优化思路以及优化后缓存问题的解决方案(找一个合适的地方清理缓存)。
说到优化,大家第一个想到的就是上 CDN!但是,在 WordPress 中尝试使用 CDN 内容分发网络之后,你会发现这并不是一件舒服的事情。暂时无法登录账号,文章修改后也不会刷新…
造成这一系列问题的主要原因是 WordPress 是一个动态网站,主要依靠数据库和 PHP 生成网页,而 CDN 分发网络只适合静态加速,所以 WordPress 上 CDN 时的缓存配置策略一定要好好研究。
目前我的网站只使用 COS+CDN 加速静态资源,网站本身不使用 CDN。如果使用全站点缓存,必然会出现上面提到的问题。这里推荐一个插件,解决这方面的一些问题,但是还不完善,需要打磨…
详情请见下面的链接。如有疑问,可以轻松找到插件作者进行咨询。感兴趣的朋友可以参考一下。
WP-CDN-Yes WordPress CDN 插件
主要介绍网站正在使用的缓存方案,是利用 WPJAM 基本插件,参考水煮鱼博客的资料编写的。前面介绍了优化过程,后面介绍了最近改主题后遇到的各种缓存问题的排查思路,并做了笔记,避免下次混淆。
一、网站动态内容优化
网站加速分为两个步骤:动态内容优化和静态资源加速。
WordPress 博客页面的生成是首先加载 WordPress 程序,然后加载插件和主题,最后根据请求从数据库中取出数据来渲染网页。当然这也是一般 PHP 脚本渲染网页的过程。
所以动态内容优化要先优化服务器,安装 OPCache 和 Memcached,再优化 WordPress。
OPCache 将编译好的 PHP 代码缓存到内存中,用户访问时可以直接调用,起到高效加速的作用。
Memcached 会将 WordPress 的数据库查询结果存储在内存中,下次直接从 Memcached 中检索,这样数据库查询会减少,甚至可以做到 0 SQL,所以页面生成的速度可以显著提高。
优化 WordPress,WPJAM 基本插件已经集成了大部分的优化选项,这里不再赘述。
WordPress 生成页面后,页面中有图片、CSS、JS 等静态文件。如果这些静态资源加载很慢,用户访问你的网站会感觉很慢,所以我们需要加快图片、CSS、JS 等静态资源的速度。
2021 年 8 月 13 日更新:
这里有一个用 Redis 替换 Memcached 的选项。下面这篇文章介绍了如何使用 Redis 和 opcache 优化动态内容,全面清晰,有需要可以参考。Wordpress 网站使用 Redis 缓存和 PHP opcache 来加速网站-zibll 子主题的详细图形教程。
第二,网站静态资源加速
静态资源加速是指用户可以快速访问博客中的图片、CSS 和 JS 文件。
另一方面,是什么阻碍了用户快速访问图片、CSS、JS 等静态资源文件?
服务器带宽不够,网页中的图片很大,或者访问量很大,所以这些资源的加载是有限的。当然服务器带宽可以升级,但是很贵。
服务器的并发并不大。虽然服务器处理静态资源所需的 CPU 远小于动态内容,但如果一个网页有几十张图片,那么一个用户的访问就相当于服务器的几十个并发,大了流量就会被阻塞。
CDN(Content Delivery Network)是指内容分发网络,使用各种缓存服务器将这些缓存服务器分发到用户访问相对集中的区域或网络。当用户访问网站时,他们使用全局负载技术将用户的访问定向到最近的工作缓存服务器,缓存服务器直接响应用户的请求。
CDN 加速有两种。一个是全场加速。在这种情况下,网站中的动态内容和静态资源都提供了 CDN 服务,而 WordPress 的动态内容是由 PHP 实时生成的,所以不建议使用 CDN 加速。此外,图片等资源还存在返回来源、无法使用缩略图等问题。
所以我们一般建议将静态资源镜像到第三方云存储服务,比如阿里云的 OSS,腾讯云的 COS,然后利用 CDN 对静态资源进行加速。