如何使用WPSuperCache和JetpackPhoton在Ubuntu14.04上优化WordPress性能

来自菜鸟教程
跳转至:导航、​搜索

介绍

在本教程中,我们将教您如何使用 WP Super Cache 和 Jetpack Photon 插件以及 Nginx 作为 Web 服务器来优化 WordPress 性能。 通过此设置,您的 WordPress 站点可以利用上述插件提供的缓存技术大大增加其并发用户容量。

WP Super Cache 的工作原理是将您的 WordPress 页面缓存为静态 HTML 页面,这样对于已经缓存的页面的页面请求就不需要由 WordPress PHP 脚本处理。 通常,您网站的大多数访问者都会查看 WordPress 页面的缓存版本,因此您的服务器将拥有更多的处理能力来为更多的用户提供服务。 WP Super Cache 插件由 Donncha O Caoimh 开发。

Jetpack Photon 是一种图像加速服务,它通过自己的内容交付网络 (CDN) 缓存和提供您的 WordPress 图像。 Photon 是 Jetpack 插件中包含的模块之一,由 Automattic 的 Jetpack 团队开发。

先决条件

要学习本教程,您需要一个使用 Nginx 作为其 Web 服务器的 WordPress 服务器。 如果你没有,你可以使用这些教程来创建一个:

插件要求或限制

WP Super Cache 与使用查询参数的插件一起使用,因为如果您将查询参数传递给 Nginx,它就不起作用。 此外,因此,您 不得 使用 WordPress 默认永久链接 设置(使用 WordPress 页码作为参数)。

Jetpack 光子限制:

  • 您必须将您的站点连接到 WordPress.com 以启用 Jetpack,这需要一个免费的 WordPress.com 帐户
  • 您的 WordPress 站点必须侦听端口 80(Photon 不适用于仅 HTTPS 的站点)
  • 缓存 gif、jpg 或 png 图像后,将无法更新。 唯一的解决方法是将重命名的图像重新上传到您的站点。
  • 复制到 Photon CDN 时间过长(超过 10 秒)的图像必须重命名并重新上传

如果您不想使用 Photon,请随意跳过本教程的该部分。

现在我们已经有了先决条件,让我们开始安装 WP Super Cache!

安装和配置 WP Super Cache 插件

安装 WP Super Cache 插件的第一步是将其从 wordpress.org 下载到您的主目录:

cd ~; wget http://downloads.wordpress.org/plugin/wp-super-cache.1.4.zip

如果您没有安装解压缩包,请立即执行:

sudo apt-get install unzip

然后将 WP Super Cache 插件解压缩到您的 WordPress 插件目录(如果您在其他地方安装了 WordPress,请将突出显示的路径替换为您自己的路径):

cd /var/www/html/wp-content/plugins
unzip ~/wp-super-cache.1.4.zip

接下来,我们将更改插件的组所有权:

sudo chgrp -R www-data wp-super-cache

我们将允许插件写入 wp-content 目录和 wp-config.php 文件:

chmod g+w /var/www/html/wp-content
chmod g+w /var/www/html/wp-config.php

现在 WordPress 文件已正确设置,让我们激活插件。

激活 WP Super Cache 插件

以管理员用户身份登录到您的 WordPress 站点,然后转到仪表板 (http://example.com/wp-admin/)。 按照以下步骤激活 WP Super Cache 插件,然后进入其设置窗口:

  1. 点击 Plugins(左栏)
  2. 点击WP Super Cache正下方的Activate
  3. 点击WP Super Cache 设置

启用缓存

现在我们将启用缓存并使用一些合理的设置配置 WP Super Cache:

  1. 单击高级选项卡
  2. 检查缓存点击到这个网站以便快速访问。
  3. 选择 使用 mod_rewrite 服务缓存文件。

这会将 WP Super Cache 配置为缓存被访问的文件,并且 mod_rewrite 设置将其留给 Nginx 来提供缓存的文件。 我们实际上不会使用 mod_rewrite 因为它是一个 Apache 插件,并且我们使用 Nginx 作为我们的 Web 服务器,但是我们需要更新我们的 Nginx 服务器块配置,以便 Nginx 适当地提供缓存文件. 在我们调整更多 WP Super Cache 设置后,我们将实现这一点(注意:以下设置是可选的):

  1. 选中 压缩页面,以便更快地为访问者提供服务。
  2. 勾选不要为已知用户缓存页面。
  3. 检查缓存重建。
  4. 检查额外的主页检查。

接下来,您需要通过单击 Update Status 按钮来保存您的设置,该按钮应该在您刚刚更改的设置下方:

WP Super Cache 现在配置为缓存您的 WordPress 页面。 我们仍然需要将 Nginx 配置为 serve 缓存文件,但让我们在 WP Super Cache 设置窗口中查看其他一些内容。

关于 Mod 重写和垃圾收集的警告

此时,您将在 WP Super Cache 配置窗口顶部看到一些警告横幅。 关于 Mod Rewrite 规则会有两个警告(这里是第一个):

您可能会忽略这一点,因为我们将使用 Nginx 而不是 Apache。

接下来,您将看到有关垃圾收集设置的警告:

此警告可以通过解除它来删除(即 单击“关闭”按钮)或通过配置垃圾收集。 要配置垃圾收集,请转到到期时间和垃圾收集高级选项卡中的部分,然后根据自己的喜好对其进行配置,然后单击更改到期按钮。

查看缓存内容

您可以通过转到 WP Super Cache 设置的 Contents 选项卡来查看所有缓存页面的列表。 在这里,您将看到“缓存统计信息”,它显示了缓存了多少文件(以及缓存了哪些文件)。 您也可以从此处删除当前缓存。

WP Super Cache 仅缓存未登录、未发表评论或未查看受密码保护的帖子的用户访问的页面。 因此,如果您想知道为什么您正在访问的页面没有被缓存,请尝试在隐私浏览模式下查看您的 WordPress 网站。 此外,Nginx 尚未配置为提供缓存文件,因此您不会看到访问时间有任何改进。

额外的 WP 超级缓存配置

除了上面讨论的设置之外,您可能会发现许多其他设置有用或有趣。 我们将简要介绍 CDN 和 Preloading 选项卡。

使用 CDN – 如果您要使用 Jetpack Photon,请跳过

如果您使用 CDN,请务必在 CDN 选项卡中启用 CDN 支持。 卸载静态资产所需的所有设置都位于此处。

预加载缓存

Preload 选项卡中,您可以配置 WP Super Cache 以自动缓存页面。 这可以配置为在您指定的时间间隔内预加载您的整个站点或固定数量的最近帖子。 预加载页面会占用系统资源(检索页面的 CPU 和存储静态页面的磁盘空间),因此在决定是否要启用它时要考虑到这一点。

配置 Nginx 以提供缓存文件

现在您的 WordPress 站点正在使用 WP Super Cache 缓存页面,您必须配置 Nginx 以提供缓存文件。 编辑 Nginx 服务器块配置:

sudo vi /etc/nginx/sites-enabled/wordpress

如果您遵循了先决条件教程,请将以下配置行直接放在 server_name 行下方:

 set $cache_uri $request_uri;

    # POST requests and urls with a query string should always go to PHP
    if ($request_method = POST) {
        set $cache_uri 'null cache';
    }   
    if ($query_string != "") {
        set $cache_uri 'null cache';
    }   

    # Don't cache uris containing the following segments
    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';
    }   

    # Don't use the cache for logged in users or recent commenters
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
        set $cache_uri 'null cache';
    }

    # Use cached or actual file if they exists, otherwise pass request to WordPress
    location / {
        try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php ;
    }    

然后删除 location ~ \.php$ { 之前的行。

重启 Nginx 以使配置更改生效:

sudo service nginx restart

现在您的 WordPress 网站的页面将通过 WP Super Cache 进行缓存! 如果您还想使用 Jetpack Photon 缓存图像,请继续下一部分。

安装并启用 Jetpack Photon

将 Jetpack 插件下载到您的主目录:

cd ~; wget http://downloads.wordpress.org/plugin/jetpack.latest-stable.zip

然后将 Jetpack 存档解压缩到您的 WordPress 插件目录中:

cd /var/www/html/wp-content/plugins
unzip ~/jetpack.latest-stable.zip
sudo chgrp -R www-data jetpack

Jetpack 附带了除 Photon 之外的几个模块,其中许多模块默认启用。 如果您想使用除 Jetpack 之外的其他 Jetpack 模块,请跳过以下编辑,并通过 WordPress 管理员仪表板上的 Jetpack 插件设置激活 Photon 模块。 否则,我们可以通过在插件的 PHP 文件中添加几行代码来禁用其他模块。

打开wp-config.php进行编辑:

vi /var/www/html/wp-config.php

转到文件末尾并添加以下代码行:

function change_default_modules() {
    return array( 'photon' );  // activate these modules by default
}
add_filter( 'jetpack_get_default_modules', 'change_default_modules' );

function activate_specific_jetpack_modules( $modules ) {
        $active_modules = array( 'photon' );  // enable these modules
        $modules = array_intersect_key( $modules, array_flip( $active_modules ) );  // deactivate other modules
        return $modules;
}
add_filter( 'jetpack_get_available_modules', 'activate_specific_jetpack_modules' );

保存并退出。 现在,当您激活 Jetpack 插件时,它只会加载 Photon 模块并禁用所有其他 Jetpack 模块的使用。

激活 Jetpack 插件

现在以管理员用户身份登录到您的 WordPress 站点,然后转到仪表板 (http://example.com/wp-admin/)。 按照以下步骤激活 Jetpack 插件,然后进入其设置:

  1. 点击 Plugins(左栏)
  2. 点击 Jetpack 正下方的 Activate
  3. 单击插件窗口顶部附近绿色横幅中的 连接到 WordPress.com
  4. 输入您的 WordPress.com 登录名并单击 Authorize Jetpack

现在,您 WordPress 网站上的所有图像(.png、.jpg、.gif)都将由 Jetpack 的 Photon CDN 提供。 以下是您的服务器将受到影响的几种方式:

  • 更少的带宽消耗:您的服务器将使用更少的传出带宽,因为由 WordPress.com 提供的 Photon CDN 将为您网站的图像提供服务
  • 更少的资源消耗:它将消耗更少的CPU和内存,因为它不再为用户提供图像,并且主要是静态页面
  • 更多用户容量:它将能够处理更多并发用户,因为每个请求使用的资源更少

就是这样! Photon CDN 将根据请求缓存和提供您的图像。 请注意,如果您决定不想使用 Photon,您可以随时在 Jetpack 插件设置中禁用它。

性能比较

为了向您展示此设置的潜在性能优势,我们设置了两个 1 CPU / 1GB RAM VPS(一个没有 WP Super Cache,一个有它),我们使用 Apache JMeter 对它们执行负载测试(多个用户循环访问 5 个 WordPress 页面超过 10 秒)。

在显示由于 CPU 利用率导致的性能问题之前,非缓存服务器每秒能够处理大约 3 个模拟用户。

安装了 WP Super Cache 的缓存服务器每秒能够为超过 50 个模拟用户提供服务( 每天数百万 ),而没有表现出任何性能下降 - 事实上,它更快地返回请求,因为请求的页面被缓存了!

此处提供了有关如何使用 Apache JMeter 执行您自己的负载测试的教程:如何使用 Apache JMeter 在 Web 服务器上执行负载测试

结论

现在您已经安装了 WP Super Cache 和 Jetpack Photon,您应该能够为比以前更多的用户提供服务。 您可能想要使用 WP Super Cache 设置,直到您觉得您的配置最适合您的需求。

随意发布问题或您自己的性能比较!