介绍
在本教程中,我们将教你如何通过使用WP Super Cache和Jetpack Photon插件以及 Nginx作为Web服务器来优化WordPress的性能。
WP Super Cache 通过将您的 WordPress 页面缓存为静态 HTML 页面,以便页面请求,对于已经缓存的页面,不需要被 WordPress PHP 脚本处理。 通常,您的网站的大多数访问者将查看 WordPress 页面的缓存版本,因此您的服务器将有更多的处理能力来服务越来越多的用户。
Jetpack Photon是一个图像加速服务,通过其自己的内容交付网络(CDN)缓存和服务您的WordPress图像。
前提条件
要遵循本教程,您将需要一个使用 Nginx 作为 Web 服务器的 WordPress 服务器. 如果您没有,您可以使用这些教程创建一个:
- [如何在Ubuntu 14.04上安装Linux,nginx,MySQL,PHP(LEMP)堆栈(https://andsky.com/tech/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04)
- 如何在Ubuntu 14.04上安装WordPress与 Nginx
插件要求或限制
WP Super Cache 不会与使用查询参数的插件工作,因为如果您将查询参数传递给 Nginx,它不会工作。
Jetpack 光子限制:
- 您必须将您的网站连接到 WordPress.com 才能启用 Jetpack,这需要一个免费的 WordPress.com 帐户
- 您的 WordPress 网站必须在端口 80 (Photon 不会在 HTTPS 仅用的网站上工作)
- 一旦一个 gif、jpg 或 png 图像被缓存后,它就无法更新。
如果你不想使用Photon,请自由跳过教程的那个部分。
现在,我们已经完成了前提条件,让我们开始安装 WP Super Cache!
安装和配置 WP Super Cache 插件
安装 WP Super Cache 插件的第一步是从 wordpress.org 下载到您的主目录:
1cd ~; wget http://downloads.wordpress.org/plugin/wp-super-cache.1.4.zip
如果您尚未安装 unzip 包,请立即执行:
1sudo apt-get install unzip
然后将WP Super Cache插件解密到您的WordPress插件目录(如果您在其他地方安装了WordPress,则将突出的路径替换为自己的):
1cd /var/www/html/wp-content/plugins
2unzip ~/wp-super-cache.1.4.zip
接下来,我们将更改插件的群组所有权:
1sudo chgrp -R www-data wp-super-cache
我们将允许插件写入wp-content
目录和wp-config.php
文件:
1chmod g+w /var/www/html/wp-content
2chmod g+w /var/www/html/wp-config.php
现在,WordPress文件已正确设置,让我们激活插件。
启用 WP Super Cache 插件
登录您的WordPress网站作为您的管理员用户,然后进入Dashboard(http://example.com/wp-admin/). 激活WP Super Cache插件,然后进入其设置窗口,按照以下步骤:
- 点击 Plugins(左栏) 2 点击 Activate 直接在 WP Super Cache 3 点击 WP Super Cache Settings
允许缓存
现在我们将允许缓存和配置WP Super Cache,使用一些合理的设置:
- 点击高级卡
- 检查 _Cache 访问本网站以便快速访问。
- 选择 _Use mod_rewrite 来服务缓存文件。
这将配置 WP Super Cache 来缓存访问的文件,而 mod_rewrite 设置将它留给 Nginx 来服务缓存文件. 我们实际上不会使用 mod_rewrite,因为它是一个 Apache 插件,我们正在使用 Nginx 作为我们的 Web 服务器,但我们需要更新我们的 Nginx 服务器块配置,以便 Nginx 适当地服务缓存文件。
- 检查 _Compress 页面以便更快地向访问者提供服务。 2 检查 _Don't cache 页面为已知用户。 3 检查 _Cache 重建。
接下来,您需要通过点击 Update Status 按钮来保存您的设置,该按钮应该位于您刚刚更改的设置下方:
WP Super Cache 现在已配置为缓存您的 WordPress 页面,我们仍然需要将 Nginx 配置为 serve 缓存文件,但让我们看看 WP Super Cache 设置窗口中的其他一些事情。
关于Mod Rewrite和垃圾收集的警告
在此时刻,您将在 WP Super Cache 配置窗口的顶部看到一些警告标签. 将有两个关于 Mod Rewrite 规则的警告标签(这里是第一个):
你可能会忽略这一点,因为我们将使用 Nginx 而不是Apache。
接下来,您将看到有关垃圾收集设置的警告:
此警告可以通过删除它(即点击删除
按钮)或通过配置垃圾收集来删除。 若要配置垃圾收集,请在高级
选项卡中的 Expiry Time & Garbage Collection 部分,然后将其配置为您喜欢,然后点击 Change Expiration 按钮。
查看缓存内容
您可以通过访问 WP Super Cache 设置的 Contents 卡来查看所有缓存页面的列表. 在这里,您将看到缓存统计
,该列表显示有多少文件已缓存(以及哪些文件已缓存)。
WP Super Cache 只会缓存未登录、未发表评论或未查看密码保护的页面,因此如果您想知道您正在访问的页面为什么没有缓存,请尝试以私人浏览模式查看您的 WordPress 网站。
WP 超级缓存配置
除了上面讨论的设置外,还有许多其他您可能觉得有用或有趣的设置,我们将简要介绍CDN和预加载选项。
** 使用 CDN** - 如果您打算使用 Jetpack Photon
如果您使用的是 CDN,请确保在 _CDN 选项卡中启用 CDN 支持. 您需要卸载静态资产的所有设置都位于此处。
** 预存缓存**
在 Preload 选项卡中,您可以将 WP Super Cache 配置为自动缓存页面,可配置为在您指定的时间间隔内预加载整个网站或固定数量的最新帖子,预加载页面需要系统资源(CPU来检索页面和磁盘空间来存储静态页面),因此在决定是否要启用它时要考虑这一点。
配置 Nginx 以服务缓存文件
现在您的 WordPress 网站正在使用 WP Super Cache 缓存页面,您必须配置 Nginx 来服务缓存文件。
1sudo vi /etc/nginx/sites-enabled/wordpress
如果您遵循了前提教程,请将下列配置行直接放置在server_name
行下方:
1set $cache_uri $request_uri;
2
3 # POST requests and urls with a query string should always go to PHP
4 if ($request_method = POST) {
5 set $cache_uri 'null cache';
6 }
7 if ($query_string != "") {
8 set $cache_uri 'null cache';
9 }
10
11 # Don't cache uris containing the following segments
12 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)") {
13 set $cache_uri 'null cache';
14 }
15
16 # Don't use the cache for logged in users or recent commenters
17 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
18 set $cache_uri 'null cache';
19 }
20
21 # Use cached or actual file if they exists, otherwise pass request to WordPress
22 location / {
23 try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php ;
24 }
然后删除随后的行,直到`位置 ~ .php$ {。
重新启动 Nginx 以执行配置更改:
1sudo service nginx restart
现在您的WordPress网站的页面将通过WP超级缓存进行缓存!如果您还想缓存您的图像,使用Jetpack Photon,继续到下一节。
安装和启用Jetpack Photon
下载 Jetpack 插件到您的家庭目录:
1cd ~; wget http://downloads.wordpress.org/plugin/jetpack.latest-stable.zip
然后在您的 WordPress 插件目录中解密 Jetpack 档案:
1cd /var/www/html/wp-content/plugins
2unzip ~/jetpack.latest-stable.zip
3sudo chgrp -R www-data jetpack
Jetpack 配备了不包括 Photon 之外的多个模块,其中许多是默认启用的。如果您想使用其他 Jetpack 模块,除了 Jetpack,请跳过以下编辑,并通过您的 WordPress 管理员仪表板上的 Jetpack 插件设置激活 Photon 模块。否则,我们可以通过添加一些代码到插件的 PHP 文件来禁用其他模块。
打开wp-config.php来编辑:
1vi /var/www/html/wp-config.php
转到文件的尽头并添加以下代码行:
1function change_default_modules() {
2 return array( 'photon' ); // activate these modules by default
3}
4add_filter( 'jetpack_get_default_modules', 'change_default_modules' );
5
6function activate_specific_jetpack_modules( $modules ) {
7 $active_modules = array( 'photon' ); // enable these modules
8 $modules = array_intersect_key( $modules, array_flip( $active_modules ) ); // deactivate other modules
9 return $modules;
10}
11add_filter( 'jetpack_get_available_modules', 'activate_specific_jetpack_modules' );
现在,当您激活Jetpack插件时,它只会加载Photon模块并禁用所有其他Jetpack模块的使用。
启用 Jetpack 插件
现在登录您的WordPress网站作为您的管理员用户,然后进入Dashboard(http://example.com/wp-admin/). 激活Jetpack插件,然后进入其设置,按照以下步骤:
- 点击 Plugins(左栏) 2 点击 Activate 直接在 Jetpack 3 点击 Connect to WordPress.com,在插件窗口顶部的绿色旗帜中 4 输入您的 WordPress.com 登录并点击 Authorize Jetpack
现在,您的WordPress网站上的所有图像(.png,.jpg,.gif)将从Jetpack的Photon CDN中提供。
- 较少的带宽消耗:您的服务器将使用较少的输出带宽,因为由WordPress.com提供的Photon CDN将为您的网站的图像提供服务
- 较少的资源消耗:它将消耗更少的CPU和内存,因为它不再为用户提供图像,而且大多只为静态页面
- ** 更多用户容量**:它将能够处理更多的同时使用者,因为它每次请求使用更少的资源
这就是它!Photon CDN将缓存并根据您的要求服务您的图像. 请注意,如果您决定不使用它,您可以随时在Jetpack插件设置中禁用Photon。
绩效比较
为了向您展示此设置的潜在性能效益,我们设置了两个1 CPU / 1GB RAM VPS(一个没有WP Super Cache,一个有它),我们使用Apache JMeter对它们进行负载测试(多个用户在循环中访问5个WordPress页面10秒)。
该无缓存服务器能够处理每秒约3个模拟用户,然后由于CPU利用而出现性能问题。
WP Super Cache 安装的缓存服务器能够为每秒超过 50 个模拟用户(每天数百万)提供服务,而不会显示性能下降 - 事实上,它更快地返回请求,因为所请求的页面已缓存!
关于如何使用Apache JMeter来执行自己的负载测试的教程可以在这里找到: 如何在Web服务器上使用Apache JMeter来执行负载测试
结论
现在你已经安装了 WP Super Cache 和 Jetpack Photon,你应该能够为比以前的更多用户提供服务。
请自由发布问题或自己的绩效比较!